Clarify the destructuring syntax
André Bargull
andre.bargull at udo.edu
Fri Apr 11 04:10:38 PDT 2014
> 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é
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20140411/98f5ce78/attachment.html>
More information about the es-discuss
mailing list