And this is why I use `var` instead of `let` in REPLs. They're doing what
they're supposed to do; it's just unintuitive.

As a secondary proposal, I feel `let`/`const` in scripts should be allowed
to shadow existing globals at the top level *provided* they are not
declared in the same script. It'd solve the globals issue as well as not
require the parser to make calls to the runtime environment. Of course,
this means engines can't assume global `const` is immutable, but they
already do similar global checks, anyways (like if the variable was not
defined in that script).

On Tue, Nov 28, 2017, 14:31 Joseph <[email protected]> wrote:

> Re "x is irreparably hosed in your REPL"; you can still use it in
> subscope, eg <{let x=1;console.log(1)}>.
>
> On 29 November 2017 at 01:30, T.J. Crowder <
> [email protected]> wrote:
>
>> On Tue, Nov 28, 2017 at 5:05 PM, Joseph <[email protected]> wrote:
>> > You can still do `{x}`.
>>
>> Can you expand on that? It doesn't seem to me you can. I mean, if even `x
>> = 42;` won't work (https://jsfiddle.net/tw3ohac6/), I fail to see how
>> anything else using `x` would work, including `{x}` (
>> https://jsfiddle.net/tw3ohac6/1/, https://jsfiddle.net/tw3ohac6/2/). `x`
>> is permanently in the TDZ as far as I can tell.
>>
>> -- T.J. Crowder
>>
>
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to