<br><br><div class="gmail_quote">On Thu, Jul 5, 2012 at 6:30 PM, Rick Waldron <span dir="ltr"><<a href="mailto:waldron.rick@gmail.com" target="_blank">waldron.rick@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 class="im">
    <div><br></div>
     
    <p style="color:#a0a0a8">On Thursday, July 5, 2012 at 9:18 PM, Brendan Eich wrote:</p>
    <blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px">
        <div><div><div>Brendan Eich wrote:</div><blockquote type="cite"><div><div>This upholes the Array forEach (and all other extras) hole-skipping. </div><div>The deck is stacked against for(;;) iteration in my view.</div>

</div></blockquote><div><br></div><div>LOL, "This upholds", of course.</div><div><br></div></div></div></blockquote></div><div>I had hoped this was a clever pun :)</div><div><br></div><div><br></div><div>Currently, devs expect for-loop and while (assuming common patterns in play here) to be "the expected" way that sparse array holes are exposed -- so from the "give me what I most likely expect" perspective, I agree with the consistency wins argument: for-of should act like for-in </div>

</blockquote><div><br></div><div>To clarify, the behaviours I'm comparing are as follows:</div><div><br></div><div><div>var i, a = [1, 2, , 4];</div><div>for ( i in a ) { </div><div>  console.log( i, a[i] ); </div><div>

}</div><div><br></div><div>0 1</div><div>1 2</div><div>3 4</div><div><br></div><div>var i, a = [1, 2, , 4];</div><div>for ( i = 0; i < a.length; i++ ) { </div><div>  console.log( i, a[i] ); </div><div>}</div><div><br>
</div>
<div>0 1</div><div>1 2</div><div>2 undefined</div><div>3 4</div><div><br></div><div><br></div><div>var i = 0, a = [1, 2, , 4]; </div><div>while ( i < a.length ) { </div><div>  console.log( i, a[i] ); i++; </div><div>}</div>

<div><br></div><div>0 1</div><div>1 2</div><div>2 undefined</div><div>3 4</div></div><div><br></div><div><br></div><div>Where the latter 2 require an explicit check (not present) against holes. So I would assume that for-of would behave like...</div>

<div><br></div><div>var i, a = [1, 2, , 4]; </div><div>for ( i of a ) {</div><div>  console.log( i );</div><div>}</div><div><br></div><div>1</div><div>2</div><div>4</div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<span class="HOEnZb"><font color="#888888"><div><br></div><div>Rick</div></font></span><div class="HOEnZb"><div class="h5"><blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px">

<div><div><div></div></div></div></blockquote></div></div></blockquote></div><br>