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 <[email protected]
<mailto:[email protected]>> 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é


_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to