看到这个代码:就拿让变量out时间死区的
<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'这样的解决方法。 – Oriol
我猜想有一件有趣的事情让第一个脚本确保初始化的有效性变得困难。 – Pointy
@Oriol:'window.foo' [反正无法工作]:(http://stackoverflow.com/q/28776079/1048572):-) – Bergi