考虑这个 JS(它在结束时运行body
并导致错误)
(function(){
"use strict";
var div = document.getElementById("hook"),
ul = div.firstElementChild,
last_li = ul.lastElementChild;
alert(div) // alerts "Uncaught TypeError: Cannot read property 'children' of undefined"
})();
然后我删除了逗号并添加了var
关键字,但收到了类似的错误(它不是 HTML):
(function(){
"use strict";
var div = document.getElementById("hook");
var ul = div.firstElementChild;
var last_li = ul.lastElementChild;
alert(div) // alerts "Uncaught TypeError: Cannot read property 'lastElementChild' of undefined "
})();
它起作用的唯一方法是alert()
在赋值之后直接添加语句div
。我假设这与变量提升有关,但经验不足,无法确定。
有人可以简要介绍一下变量提升以及这里可能发生的情况吗?谢谢!