On Nov 5, 2011, at 9:38 AM, Allen Wirfs-Brock wrote:

> In a similar vain, what is the value of r in:
> 
> let [z,y,...r] = {0:0, 1:1, 2:2, length: 3, 3:3,4:4};
> 
> should it be [2] or [2,3,4]  (and if the latter how is that determined)?

The inspiration for ... in the past came from (among other sources) Successor 
ML:

http://successor-ml.org/index.php?title=Functional_record_extension_and_row_capture


> It seems to me that [2] is the right answer

The issue with ... in an array destructuring pattern is different from the case 
without. We have a choice, as you say. It's not obvious that doing a "get" of 
'length' on the RHS (once per ...) is the right answer. It's plausible in my 
view that ... captures all indexed properties (index as defined by ECMA-262).

/be


> and if that is the cause, consistency requires that for the first problem z 
> gets the value undefined.
> 
> Allen
> 
> On Nov 5, 2011, at 9:28 AM, Allen Wirfs-Brock wrote:
> 
>> In the following declaration, what should be the value of z?
>> 
>> let [z,y,z] = {0:0, 1:1, length: 2, 2:2};
>> 
>> should it be be 2 or undefined
>> 
>> undefined might be reasonable because it is an array pattern, and the source 
>> object is only has two "array-like" elements
>> 2 might be reasonable because the source object actually has a property 
>> named "2"
>> 
>> Which alternative will be least surprising to JS programmers?
>> 
>> Allen
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss@mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>> 
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to