下面是我的代碼:時間死區(ES6)似乎沒有工作
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1 id="message"></h1>
<script src="traceur/traceur.js"></script>
<script src="traceur/BrowserSystem.js"></script>
<script src="traceur/bootstrap.js"></script>
<script type="module">
var x = 'outer scope';
(function() {
console.log(x); //Expected undefined, got undefined ! this is as expected.
var x = 'inner scope';
}());
//same as above, but changed to var to let and x to y
let y = 'outer scope';
(function() {
console.log(y); //Was expecting ReferenceError here, but got undefined. WTF ??!!!
let y = 'inner scope';
}());
</script>
</body>
</html>
它似乎ES6時間放置區(TDZ)應該拋出的ReferenceError萬一讓-VAR之前它使用被宣佈。
但是,在這個例子中,我沒有定義讓。 我哪裏錯了?
一直在這個問題很長一段時間,浪費了一天的時間。 (任何指針都會非常有幫助)。我使用的是Chrome v58。
v58在當前瀏覽器下具有esp兼容性,按照https://kangax.github.io/compat-table/es6/)。
我剝離traceur部分並貼在babel上 - 試用它,並得到相同的結果。
我想知道爲什麼它不能在我的鍍鉻v58中工作。也許它還需要別的東西?
僅供參考,它被稱爲* temporal ** dead ** zone *,而不是時間* drop * zone。 –