Clarify the destructuring syntax
André Bargull
andre.bargull at udo.edu
Fri Apr 11 05:22:29 PDT 2014
On 4/11/2014 2:02 PM, Егор Николаев wrote:
> @André Bargull
> Are there any reasons for these restrictions? It confuses me. If I can
> for-of over string, so why can't I destructuring it?
I'd say it's mostly a language designer decision and it may still change
before the final specification is published. I'd encourage you to file
bug reports at https://bugs.ecmascript.org/ and/or post to this mailing
list if you find any issues with the current specification draft. That
way Allen (the spec editor, cc-ed) and other TC-39 members are notified
and can take appropriate actions.
- André
>
>
> On Fri, Apr 11, 2014 at 3:10 PM, André Bargull <andre.bargull at udo.edu
> <mailto:andre.bargull at udo.edu>> wrote:
>
>> Hi Erop,
>>
>>
>> On Fri, Apr 11, 2014 at 12:35 PM, Егор Николаев <termi1uc1 at gmail.com <https://mail.mozilla.org/listinfo/es-discuss>> wrote:
>>
>> >/ 1. Should the AssignmentExpression of DestructuringAssignment always to be
>> /
>> >/the Object type? />/```javascript />/let {length} = "123";
>> />/assert(length, 3); />/``` />/Is this valid? />// Yes.
>
> No.
>
> 13.2.1.4 Runtime Semantics: Evaluation,
> LexicalBinding : BindingPattern Initializer, step 4
>
> https://people.mozilla.org/~jorendorff/es6-draft.html#sec-let-and-const-declarations-runtime-semantics-evaluation
>
>
>
>> >/
>> />/ If it is:
>> />/ 2. Should the result of Get(obj, name) always be the Object type if
>> />/ DestructuringAssignmentTarget is an ObjectLiteral or an ArrayLiteral?
>> />/ According the spec 12.14.5.4 step 4.b this expression is invalid:
>> />/ ```javascript
>> />/ let {text: {length}} = {text: "123"};
>> />/ assert(length, 3);
>> />/ ```
>> />/
>> /
>> Yes.
>
> No.
>
> 13.2.3.7 Runtime Semantics: KeyedBindingInitialization
> BindingElement : BindingPattern Initializer_opt, step 4
>
> https://people.mozilla.org/~jorendorff/es6-draft.html#sec-runtime-semantics-keyedbindinginitialization
>
>
>> You can test this in the web console in a Nightly or Aurora build of
>> Firefox.
>
> You can test this in traceur or my test implementation
> [https://github.com/anba/es6draft]. ;-)
>
> Maybe the final draft will revert this restriction, it was
> originally introduced in rev17. It is somewhat annoying, especially
> for the string type, because the restriction also applies to spread
> array elements and spread calls. For example `[..."abc"]` must now
> be written as `[...new String("abc")]` to get the array of code points.
>
> - André
>
>
More information about the es-discuss
mailing list