Rick Waldron (2013-12-19T22:39:10.000Z)
On Thu, Dec 19, 2013 at 5:34 PM, Rick Waldron <waldron.rick at gmail.com>wrote:

>
>
>
> On Thu, Dec 19, 2013 at 3:03 PM, Andrea Giammarchi <
> andrea.giammarchi at gmail.com> wrote:
>
>> It seems that I need to create N amount of garbage by design.
>>
>> This does not work, the const has already been defined:
>>
>> ```javascript
>> try {
>>   new Proxy({},{});
>>   const ES6_PROXY = true;
>> } catch(o_O) {
>>   const ES6_PROXY = false;
>> }
>> ```
>>
>
> That doesn't work anyway, not because the const has already been defined,
> but because ES6_PROXY is defined within block bodies. Same as:
>
> {
>   const IS_BOUND_TO_THE_BLOCK = true;
> }
>
>
>
>>
>> This does not work neither
>>
>> ```javascript
>> try {
>>   new Proxy({},{});
>>   var ES6_PROXY = true;
>> } catch(o_O) {
>>   var ES6_PROXY = false;
>> }
>> const ES6_PROXY = false;
>>
>> // var 'ES6_PROXY' has already been declared
>> ```
>>
>
> Because the var was hoisted up to the const's scope and const can't be
> used to redeclare an existing binding of the same name. Is ES6_PROXY meant
> to be bound in the global scope?
>
>
>
>>
>>  neither does the following
>>
>> ```javascript
>> try {
>>   new Proxy({},{});
>>   let ES6_PROXY = true;
>> } catch(o_O) {
>>   let ES6_PROXY = false;
>> }
>>
>> // Illegal let declaration outside extended mode
>>
>
> That's a Canary-specific error, but the code wouldn't do what you want
> anyway, for the same reason as the first example.
>

Also, if you want to experiment with the closest-to-spec-so-far let/const
behavior, use IE11.


Rick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20131219/3eeb0e28/attachment.html>
domenic at domenicdenicola.com (2014-01-06T13:49:37.195Z)
Also, if you want to experiment with the closest-to-spec-so-far let/const
behavior, use IE11.