Allen privately observed that Array forEach skips holes, matching
for-in. That counts for a lot with me -- we have only a blind
for(i=0;i<a.length;i++)... loop not skipping holes, but of course it
wouldn't. That is weak precedent on which to build for-of.
Map may win at some point, who knows? It's not winning if one wants an
array, numeric indexing, .length, the usual prototype methods.
/be
Jason Orendorff wrote:
On Thu, Jul 5, 2012 at 6:11 AM, teramako<[email protected]> wrote:
Firefox 15 or later can use for-of statement.
I have a question about this.
var array = new Array(3);
for (var i in array) {
console.log(i);
}
for (var v of array){
console.log(v);
}
This for-in code logs nothing of course but for-of code logs 3 of undefined.
[...]
Are these behaviors correct ?
Well, they're certainly intentional. There's no final specification
yet, so it could change.
The rationale for this is that for-of should act like the canonical
for-loop over an array:
var array = new Array(3);
for (var i = 0; i< array.length; i++)
console.log(array[i]); // "undefined" 3 times
for (var v of array)
console.log(v); // "undefined" 3 times
The corresponding for-in loop is much rarer, with good reason. Note
that "for-in" on an Array is underspecified (in terms of the order in
which the property names are visited and what happens when properties
are added or removed during iteration). The behavior we implemented
for Array iterators is straightforward and easy to use, and it's
easier to specify fully. See
<http://wiki.ecmascript.org/doku.php?id=harmony:iterators>.
I think Map will end up being better than Array for sparse collections.
-j
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss