Domenic Denicola wrote:
From: Rick Waldron [mailto:[email protected]]
This seems like an unfortunate decision, and I couldn't discern the motivation
in the minutes. When would I want to use a syntax that fails for iterables?
Does [...x] throw for an iterable, or result in something else?
The direct reasoning for the resolution was:
"Cannot be both iterable and array-like"
I can't really understand what this is trying to say. It must be because I don't understand
"iterable". Doesn't it just mean "responds to for-of"?
It means (in ES6, SpiderMonkey uses a string property name 'iterator')
that the object in question ("is obj iterable?) has an @iterator
property, which when called gets or creates an iterator for obj.
I would imagine arrays, NodeLists, arguments, and other array-likes all respond
to for-of; if they don't, that seriously decreases the utility of for-of!
Array.from is that an object is either iterable, or failing that,
array-like (even if no .length property, ToUint32(undefined) => 0 so no
elements). See bottom of
https://mail.mozilla.org/pipermail/es-discuss/2012-July/024207.html.
As Allen's followup points out, array iteration skips holes, to match
Array.prototype.forEach. Should spread fill holes or skip them?
It's possible that this could be added to the agenda for november, if Brendan
wants to discuss SpiderMonkey's experience implementing it. It seems to me that
if they're not having issues then it's at least worth a mention.
Yay!
I actually do not remember why we went back to only array-like instead
of iterable || array-like for spread. Can someone (Rick? Dave? Arv?) recall?
/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss