<div dir="ltr"><div dir="ltr" class="gmail_msg"><div class="gmail_msg"><span style="color:rgb(33,33,33)" class="gmail_msg">(pasting it here...got kinda lost with some other e-mail mixing this thread)</span></div><span style="color:rgb(33,33,33)" class="gmail_msg">hi</span><div class="gmail_msg" style="color:rgb(33,33,33)"><br class="gmail_msg"></div><div class="gmail_msg" style="color:rgb(33,33,33)">I started the thread with this question because I thought exactly in both performance (short circuit) and readability.</div><div class="gmail_msg" style="color:rgb(33,33,33)"><br></div><div class="gmail_msg" style="color:rgb(33,33,33)">Bear with me:</div><div class="gmail_msg" style="color:rgb(33,33,33)"><br class="gmail_msg"></div><div class="gmail_msg" style="color:rgb(33,33,33)">```</div><div class="gmail_msg" style="color:rgb(33,33,33)">// the expression</div><div class="gmail_msg" style="color:rgb(33,33,33)">let x = a || b;</div><div class="gmail_msg" style="color:rgb(33,33,33)">// could be</div><div class="gmail_msg" style="color:rgb(33,33,33)">let x;</div><div class="gmail_msg" style="color:rgb(33,33,33)">if (a) { x = a; }</div><div class="gmail_msg" style="color:rgb(33,33,33)">else { x = b; }</div><div class="gmail_msg" style="color:rgb(33,33,33)">```</div><div class="gmail_msg" style="color:rgb(33,33,33)"><br class="gmail_msg"></div><div class="gmail_msg" style="color:rgb(33,33,33)">So...the operator "||" in THIS particular case is also just an alternative, and yet extremely useful (and used). It is short, and is it beautiful for reading.</div><div class="gmail_msg" style="color:rgb(33,33,33)">That OR could be the good old "if"! Even though, I use it everywhere I can.</div><div class="gmail_msg" style="color:rgb(33,33,33)"><br class="gmail_msg"></div><div class="gmail_msg" style="color:rgb(33,33,33)">```</div><div class="gmail_msg" style="color:rgb(33,33,33)">// the expression</div><div class="gmail_msg" style="color:rgb(33,33,33)">if (obj.prop.prop2 === 'a' : 'b' : 'c') { ... }</div><div class="gmail_msg" style="color:rgb(33,33,33)">// could be</div><div class="gmail_msg" style="color:rgb(33,33,33)">if (obj.prop.prop2 === 'a' || obj.prop.prop2 === 'b'<span class="m_6468900462643259293inbox-inbox-m_6098948036969297928inbox-inbox-Apple-converted-space gmail_msg"> </span>|| obj.prop.prop2 === 'c') { ... }</div><div class="gmail_msg" style="color:rgb(33,33,33)">```</div><div class="gmail_msg" style="color:rgb(33,33,33)"><br class="gmail_msg"></div><div class="gmail_msg" style="color:rgb(33,33,33)">I see the same feeling here...yes, we could use other approaches, we could use destructors using the keys of an object...we could use [].contains, [].some, switch/case...but this is a much more beautiful way of doing it :)</div><div class="gmail_msg" style="color:rgb(33,33,33)"><br class="gmail_msg"></div><div class="gmail_msg" style="color:rgb(33,33,33)">I don't think it would make sense for &&, once things are not supposed to be equal to two different values</div><div class="gmail_msg" style="color:rgb(33,33,33)"><br class="gmail_msg"></div><div class="gmail_msg" style="color:rgb(33,33,33)">Again, just a suggestion, but one thing I like in JavaScript is its readability and power of "deduction power".</div><div class="gmail_msg" style="color:rgb(33,33,33)">The first time I read a code using || in an assignment (and I had no idea what that was, much younger, learning by myself, not knowing english, with almost zero access to internet), it toke me about 5 seconds to "guess" its behavior...it simply makes sense.</div><div class="gmail_msg" style="color:rgb(33,33,33)"><br class="gmail_msg"></div><div class="gmail_msg" style="color:rgb(33,33,33)">Thanks.</div><br class="m_6468900462643259293inbox-inbox-Apple-interchange-newline gmail_msg"></div><br class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg">On Thu, Feb 2, 2017 at 5:25 PM Jordan Harband <<a href="mailto:ljharb@gmail.com" class="gmail_msg" target="_blank">ljharb@gmail.com</a>> wrote:<br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg">It seems like a far more useful proposal (although much larger in scope) would be some concept of interface comparison, and then you could see if `object` matches "an interface that has an `a` and `b` property", but also if `object` is "arraylike", or "iterable", or a "thenable", etc.</div><div class="gmail_extra gmail_msg"><br class="gmail_msg"><div class="gmail_quote gmail_msg">On Thu, Feb 2, 2017 at 12:46 AM, T.J. Crowder <span dir="ltr" class="gmail_msg"><<a href="mailto:tj.crowder@farsightsoftware.com" class="gmail_msg" target="_blank">tj.crowder@farsightsoftware.com</a>></span> wrote:<br class="gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><span class="gmail_msg">On Wed, Feb 1, 2017 at 7:18 PM, Jeremy Darling <span dir="ltr" class="gmail_msg"><<a href="mailto:jeremy.darling@gmail.com" class="gmail_msg" target="_blank">jeremy.darling@gmail.com</a>></span> wrote:<br class="gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg">This is an interesting concept, but reuse of ()'s and : will make it difficult to pin down, scale to other operators and communicate.  Really the "inclusion" operator needs to be something that stands out, doesn't break existing spec, and won't kill new specs.</div></blockquote><div class="gmail_msg"><br class="gmail_msg"></div></span><div class="gmail_msg">Completely agreed. The trick is finding that something. We're definitely out of single-character options, so something along the lines you describe would be better. `$` is probably not going to be an option as the lead character, as it's an identifier character.<br class="gmail_msg"></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">I don't know how the process works, though. Is it too early to be thinking about syntax? The first question probably has to be whether it's worth exploring new syntax in this area at all, *then* exploring what that syntax might be...<span class="m_6468900462643259293m_4415095542719620205HOEnZb gmail_msg"><font color="#888888" class="gmail_msg"><br class="gmail_msg"></font></span></div><span class="m_6468900462643259293m_4415095542719620205HOEnZb gmail_msg"><font color="#888888" class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">-- T.J.</div></font></span></div></div></div>
<br class="gmail_msg">_______________________________________________<br class="gmail_msg">
es-discuss mailing list<br class="gmail_msg">
<a href="mailto:es-discuss@mozilla.org" class="gmail_msg" target="_blank">es-discuss@mozilla.org</a><br class="gmail_msg">
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" class="gmail_msg" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br class="gmail_msg">
<br class="gmail_msg"></blockquote></div><br class="gmail_msg"></div>
_______________________________________________<br class="gmail_msg">
es-discuss mailing list<br class="gmail_msg">
<a href="mailto:es-discuss@mozilla.org" class="gmail_msg" target="_blank">es-discuss@mozilla.org</a><br class="gmail_msg">
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" class="gmail_msg" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br class="gmail_msg">
</blockquote></div></div>