看到這個代碼:就拿讓變量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