Russell Leggett wrote:
On Wed, Jul 11, 2012 at 1:06 PM, Brendan Eich <[email protected]
<mailto:[email protected]>> wrote:
Russell Leggett wrote:
Russell asked about 'length' -- per a previous thread, I
thought
we agreed that one [[Get]] of 'length' would be done before
matching if and only if the array literal contains a spread
(covering rest, the dual for a pattern of spread in the array
literal corresponding to the pattern).
Yes, I saw this in the proposal algorithm. The reason I ask is
because it seems odd to have an additional structural
requirement in some cases but not others. Of course, I
understand why, but it sort of makes it look like [] implies
additional array-like structure in one case, but not in another.
You get what you ask for. Pay as you go. Buy by the yard.
Ok, out of clichés but I hope we aren't going to revisit and
impose a mandatory [[Get]] of 'length' on all array destructuring
forms. That is otiose and costly (potentially very).
The presence of ...rest is static syntax, so there's no runtime
maybe/maybe-not hazard.
It would not have to be a [[Get]] of 'length', just a check for its
existence.
That can still run arbitrary code for a proxy.
Its no deal breaker for me, but it seemed a little inconsistent.
Remember the Sesame Street song, "one of these things is not like the
other"? ;-)
[a, b, c]
[a, b, ...c]
Special forms are special so semantics can vary according to the syntax.
We could also be more strict with an Array.isArray check, but that
seems too strict. Anyway, just a thought.
Absolutely Array.isArray is too strict, or just wrong. Array patterns
are for array-likes, not only for arrays.
/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss