An array destructing specification choice
Allen Wirfs-Brock
allen at wirfs-brock.com
Mon Nov 7 08:34:23 PST 2011
On Nov 7, 2011, at 8:23 AM, Andreas Rossberg wrote:
> On 7 November 2011 17:07, Allen Wirfs-Brock <allen at wirfs-brock.com> wrote:
>>> let {x} = 666
>>>
>>> which will be refuted, by raising a TypeError.
>>
>> No,
>>
>> It does ToObject(666) and then looks for the "x" property of the resulting wrapper object.
>
> Ouch, really? I don't see that in the proposal
> (http://wiki.ecmascript.org/doku.php?id=harmony:destructuring), and to
> be honest, it sounds like a horrible idea.
Proposal typically don't cover this level of detail. These are the sort of things that we have to sort out when I write the specification and it's why I bring them up here.
> It is just another way to
> silently inject an `undefined' that is tedious to track down. We
> already have too many of those...
It is how the language currently behaves in all situations where an object is needed but a primitive values is provided. We want consistency in language design, not a hodgepodge of special cases and different rules.
>
> When would this ever be useful behaviour instead of just obfuscating bugs?
let {toFixed, toExponential} = 42;
Allen
More information about the es-discuss
mailing list