Consider this code:
```html
<script>
let {foo} = null; // TypeError
</script>
<script>
// Here I want to assign some some value to foo
</script>
```

The first script attempts to let-declare `foo` via a destructuring assignment. 
However, `null` can't be destructured, so the assignment throws a TypeError.
Some alternatives which would lead to the same problem are `let foo = 
null.throw` and `let foo = (() => {throw;})()`.

Then the `foo` variable is declared but uninitialized, so if in the 2nd script 
I attempt to reference `foo`, it throws:
```js
foo = 123; // ReferenceError: can't access lexical declaration `foo' before 
initialization
```

And `let` variables can't be redeclared:
```js
let foo = 123; // SyntaxError: redeclaration of let foo
```

Is this behaviour intended? Is there any way to take `foo` out of the TDZ, so 
that I can assign values and read them?

- Oriol
                                          
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to