鉴于问题:
用 let 或 const 声明的变量在 ES6 中没有提升吗?
我不明白当提升将变量从块范围提升到全局范围时会发生什么。
在我的代码中,我有:
<script>
"use strict";
let PageInit = null;
document.addEventListener("DOMContentLoaded", () => {
PageInit = new IPageInit();
doSomething();
});
function doSomething() {
alert(PageInit.RefreshCounter); // 60 //correct
}
</script>
PageInit
在全局范围内创建对doSomething()
.
但是,如果我这样做:
<script>
"use strict";
document.addEventListener("DOMContentLoaded", () => {
var PageInit = new IPageInit();
doSomething();
});
function doSomething() {
alert(PageInit.RefreshCounter); // referenceError
}
</script>
我不正确理解吊装。我希望var PageInit
块范围内会被提升到全局范围内,首先是<script>
标签内。
但事实并非如此。
谁能解释为什么不?或者它会被吊到哪里?