Vedi questo codice:Prendere diamo variabile da zona morta temporale
<script>
let {foo} = null; // TypeError
</script>
<script>
// Here I want to assign some some value to foo
</script>
Il primo script cerca di far dichiarare-foo
tramite l'assegnazione di destrutturazione. Tuttavia, null
non può essere destrutturato, quindi l'assegnazione genera un errore TypeError.
Il problema è che poi la variabile foo
viene dichiarata ma non inizializzata, quindi se nel 2 ° script che tenta di fare riferimento foo
, getta:
foo = 123; // ReferenceError: can't access lexical declaration `foo' before initialization
E let
variabili non può essere dichiarato nuovamente:
let foo = 123; // SyntaxError: redeclaration of let foo
C'è un modo per estrarlo dal TDZ, in modo che possa assegnare valori e leggerli?
BTW, voglio usare 'pippo', non soluzioni come' window.foo'. – Oriol
Immagino che ci sia qualcosa di interessante nel primo script che rende difficile la validità dell'inizializzazione. – Pointy
@Oriol: 'window.foo' [non funzionerebbe comunque] (http://stackoverflow.com/q/28776079/1048572) :-) – Bergi