考虑这个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
语句。我认为这与变量吊装有关,但我没有足够的经验知道。
有人可以快速概述变量吊装以及可能发生的事情吗?谢谢!
答案 0 :(得分:3)
这不是悬挂。
这里发生的事情如下:
(function(){
"use strict";
// this returns an element otherwise the next line would not work
// that means the element is found in the DOM
var div = document.getElementById("hook"),
// this returns the value `undefined` or `null`
ul = div.firstElementChild,
// this is a TypeError, since `ul` is undefined
last_li = ul.lastElementChild;
alert(div) // we never actually get to this line
})();
你所拥有的元素可能没有元素(可能只是文本节点?)