请考虑以下代码:
function A() {
console.log("first");
}
var f = A;
function A() {
console.log("second");
}
var g = A;
f();
g();
它在萤火虫中输出“第一”,“第二”,这是我认为应该做的。
但它会在 Chrome 的控制台或 firefox 中输出“second”、“second”(从文件执行时,而不是在 firebug 中)。
为什么要更改保留在'f'中的引用我做第二个“函数A(){”??
似乎吊装是问题所在(请参阅下面的 apsillers 回答)。但是,为什么这个例子能正常工作(我的意思是第一秒输出):
var A = function A() {
console.log("first");
}
var f = A;
A = function A() {
console.log("second");
}
var g = A;
f();
g();
我在第二个函数声明中使用“A = ...”的事实阻止了这个函数的提升?