<div dir="ltr">Could we use XOR? We would set the variable to false by default, meaning if it doesn't contain any values, it will return the OR property. By example:<div><br></div><div>true is a string and boolean in the first example and boolean in the other one. </div><div><br></div><div><span style="font-size:12.8px">`</span>var false = false <span style="color:rgb(199,37,78);font-family:Menlo,Monaco,Consolas,'Courier New',monospace;font-size:14px;line-height:18px;background-color:rgb(249,242,244)">|| 'true'</span><span style="font-size:12.8px">` This means: false XOR false XOR true = true if it is set, we use true XOR true XOR false = false , which will return the value of our variable. </span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Example by function: </span><span style="font-size:12.8px">`</span><span style="font-size:12.8px"> function() {</span></div><div><span style="font-size:12.8px"> var false = true</span></div><div><span style="font-size:12.8px"> evalToTrue()</span></div><div><span style="font-size:12.8px"> // outputs 'true'</span></div><div><span style="font-size:12.8px"> }</span><span style="font-size:12.8px">`</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">`function() {</span><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">var false = false </span></div><div><span style="font-size:12.8px">evalToTrue()</span></div><div><span style="font-size:12.8px">// outputs the value of false</span></div><div><span style="font-size:12.8px">}</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">`</span><span style="font-size:12.8px">evalToTrue()</span><span style="font-size:12.8px">` here means the XOR calculation. </span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Apr 17, 2016 at 6:30 PM, Jordan Harband <span dir="ltr"><<a href="mailto:ljharb@gmail.com" target="_blank">ljharb@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">This has been discussed many times before:<div> - <a href="https://esdiscuss.org/topic/operators-and" target="_blank">https://esdiscuss.org/topic/operators-and</a></div><div> - <a href="https://esdiscuss.org/topic/logical-assignment-operators" target="_blank">https://esdiscuss.org/topic/logical-assignment-operators</a></div><div> - <a href="https://esdiscuss.org/topic/is-much-needed" target="_blank">https://esdiscuss.org/topic/is-much-needed</a></div><div> - <a href="https://esdiscuss.org/topic/please-add-orequal-operator" target="_blank">https://esdiscuss.org/topic/please-add-orequal-operator</a></div><div><br></div><div>If you read through these threads, you may find that it's not as straightforward as you think. Would it use truthiness? "not null or undefined"? Just "not undefined"? If it behaves differently than `II`, what about all the confusion that would cause, since it would be the first "LHS x-equals RHS" that didn't behave the same as "LHS equals LHS x RHS"?</div><div><br></div><div>A proposal would, at the least, need to have addressed all these concerns as well as made it clear that it had located and addressed all prior concerns on the subject, such as the ones linked above.</div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Sun, Apr 17, 2016 at 6:21 AM, even stensberg <span dir="ltr"><<a href="mailto:evenstensberg@gmail.com" target="_blank">evenstensberg@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div dir="ltr"><span style="font-size:12.8px">I've seen a lot of code using an extra type to have as a fallback. This to me seems like not a very good way of putting use of the logical OR. Here's an example: </span><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><font color="#000000">`</font><span style="font-size:12.8px">var itemList = itemList </span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">|| 'something went extremely wrong'</span><span style="font-size:12.8px;color:rgb(0,0,0)">`</span></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"><br></span></div><div style="font-size:12.8px"><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">This is a really hacky way of doing things. I don't think you should assign your variable to a default by doing this. </span></div><div style="font-size:12.8px"><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"><br></span></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><font color="#000000" face="Times New Roman" size="3">Been back and forth by this "issue" with some of the ReactJS members at GitHub, and while saying this is a "stylus" thing, I disagree. It is more about not reiterating your code. </font></div><div style="font-size:12.8px"><font color="#000000" face="Times New Roman" size="3"><br></font></div><div style="font-size:12.8px"><font color="#000000" face="Times New Roman" size="3">Options could be:</font></div><div style="font-size:12.8px"><font color="#000000" face="Times New Roman" size="3"><br></font></div><div style="font-size:12.8px"><font color="#000000" face="Times New Roman" size="3">-tenaries - long & !clean codelines</font></div><div style="font-size:12.8px"><font color="#000000" face="Times New Roman" size="3">-default params (ES) , though it won't be a general use case</font></div><div style="font-size:12.8px"><font color="#000000" face="Times New Roman" size="3"><br></font></div><div style="font-size:12.8px"><font color="#000000" face="Times New Roman" size="3">There is already a lot of assignment, string and so on operators, but I don't really seem any of them touch this, except maybe the bit-wise OR assignment Operator. To read more about that, check these two links out:</font></div><div style="font-size:12.8px"><font color="#000000" face="Times New Roman" size="3"><br></font></div><div style="font-size:12.8px"><font color="#000000" face="Times New Roman" size="3"><a href="https://msdn.microsoft.com/en-us/library/81bads72(v=vs.94).aspx" target="_blank">https://msdn.microsoft.com/en-us/library/81bads72(v=vs.94).aspx</a><br></font></div><div style="font-size:12.8px"><font color="#000000" face="Times New Roman" size="3"><a href="http://web.eecs.umich.edu/~bartlett/jsops.html" target="_blank">http://web.eecs.umich.edu/~bartlett/jsops.html</a><br></font></div><div><a href="http://stackoverflow.com/a/14871137/5893008" target="_blank"><span style="font-size:12.8px">http://stackoverflow.com/a/14871137/5893008</span><br></a></div><div style="font-size:12.8px"><font color="#000000" face="Times New Roman" size="3"><br></font></div><div style="font-size:12.8px"><font color="#000000" face="Times New Roman" size="3">And that is really not the use case here. We don't want a bit-wise, we want a logical OR.</font></div><div style="font-size:12.8px"><font color="#000000" face="Times New Roman" size="3"><br></font></div><div style="font-size:12.8px"><font color="#000000" face="Times New Roman" size="3">So here is what I come up with. It's not rocket science but ... nah, it's pretty straight forward..</font></div><div style="font-size:12.8px"><font color="#000000" face="Times New Roman" size="3"><br></font></div><div style="font-size:12.8px"><font color="#000000">`</font><font color="#000000" face="Times New Roman" size="3">var listItem </font><span style="font-size:12.8px;color:rgb(0,0,0)">|| = 'I love open source!'</span><span style="font-size:12.8px;color:rgb(0,0,0)">`</span></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><font color="#000000">For me, this is one thousand times more clean and it makes sense. JavaScript teaches us and wants us to use </font><span style="font-size:12.8px;color:rgb(0,0,0)">`</span><span style="color:rgb(0,0,0);font-size:12.8px">+ =</span><span style="font-size:12.8px;color:rgb(0,0,0)">`</span><span style="color:rgb(0,0,0);font-size:12.8px">,</span><span style="font-size:12.8px;color:rgb(0,0,0)">`</span><span style="color:rgb(0,0,0);font-size:12.8px"> - =</span><span style="font-size:12.8px;color:rgb(0,0,0)">`</span><span style="color:rgb(0,0,0);font-size:12.8px"> and any other type of "abbreviation" , so this makes perfectly sense for me. Either I'm crazy, but it seems like this should have been implemented a long time ago. ( Perhaps I'm both). </span></div><div style="font-size:12.8px"><span style="color:rgb(0,0,0);font-size:12.8px"><br></span></div><div style="font-size:12.8px"><font color="#000000">Implementation will be another issue, but let us discuss that too( just keep in mind this is conceptional) </font></div><div style="font-size:12.8px"><font color="#000000"><br></font></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Without further ado, I leave this up to you to discuss, and hopefully a champion to fetch up to the committee.</div></div>
<br></div></div>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>
</blockquote></div><br></div>