【发布时间】:2016-05-30 03:29:07
【问题描述】:
我正在努力思考 JavaScript 中引发的引用错误的行为。
在下面的例子中,ReferenceError 在第二行被抛出,执行中断:
var obj = {};
obj.func1 = func2;
alert('Completed');
而在本例中,代码成功完成,尽管obj.func1 仍然是undefined:
var obj = {};
obj.func1 = func2;
var func2 = function() {
alert('func2');
};
alert('Completed');
我的假设是同样会在第二行引发错误,如果不是这种情况,我本来希望 obj.func1 正确引用 func2,但我已经加倍了盲目的。那么这里到底发生了什么?
【问题讨论】:
-
@epascarello:没有函数表达式的函数提升;只有函数 statements 被提升。这是
var吊装。
标签: javascript variable-declaration referenceerror hoisting