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
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to