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-keyedbindinginitializationYou 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

