看这段代码:
<script>
let {foo} = null; // TypeError
</script>
<script>
// Here I want to assign some some value to foo
</script>
foo
,但是null
无法进行解构,因此该赋值语句会抛出TypeError异常。问题在于
foo
变量被声明但未初始化,因此如果在第二个脚本中尝试引用foo
,它会抛出异常:foo = 123; // ReferenceError: can't access lexical declaration `foo' before initialization
let
变量不允许被重新声明:
let foo = 123; // SyntaxError: redeclaration of let foo
有没有办法将它从TDZ中取出,以便我可以分配值并读取它们?
foo
,而不是诸如window.foo
这样的解决方法。 - Oriolwindow.foo
无论如何都不会起作用 :-) - Bergidelete foo;
。 - Bergi