diesen Code Siehe:Nimm Variable lassen aus zeitlichen Totzonen
<script>
let {foo} = null; // TypeError
</script>
<script>
// Here I want to assign some some value to foo
</script>
Das erste Skript versucht foo
über eine Destrukturierung Zuordnung lassen zu deklarieren. null
kann jedoch nicht destrukturiert werden, daher löst die Zuweisung einen TypeError aus.
Das Problem ist, dass dann die foo
Variable deklariert, aber nicht initialisiert, so dass, wenn in dem zweiten Skript Ich versuche foo
zu verweisen, es wirft:
foo = 123; // ReferenceError: can't access lexical declaration `foo' before initialization
Und let
Variablen können nicht neu deklariert werden:
let foo = 123; // SyntaxError: redeclaration of let foo
gibt es eine Möglichkeit, es aus dem TDZ zu nehmen, so dass ich Werte zuweisen und sie lesen?
BTW, ich will 'foo' verwenden, nicht Abhilfen wie 'window.foo'. – Oriol
Ich vermute, dass es etwas Interessantes am ersten Skript gibt, das die Gültigkeit der Initialisierung schwierig macht. – Pointy
@Oriol: 'window.foo' [würde sowieso nicht funktionieren] (http://stackoverflow.com/q/28776079/1048572) :-) – Bergi