看着从这个site吊装例子,我不知道为什么下面变造1甚至悬挂后:空函数声明如何在JavaScript中使用吊装工作?
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
alert(a); // alerts 1
实际上是
var a = 1;
function b() {
function a() {}
a = 10;
return;
}
b();
alert(a);
难道不应该改变10,因为a
在b
函数返回之前还是分配给10个?为什么调用一个空的函数会导致这个问题?在一个相关的说明中,为什么下面没有提示功能,但仍然改变1? a
不会被重新分配给声明的函数吗?
var a = 1;
function a() {}
alert(a);
'功能(){}'就像' var a;'。 'b'中的'a'不是外面的'a'。另外'a'永远不会被调用。 – Xufox
'函数a(){}'将为函数创建一个指针并且'a = 10'将赋值给这个指针,而不是定义在外的'a' – Rajesh
您的第一个代码片段* * *实际上被解析为第二个一。 'a'变量总是超出函数a()'的范围。 – haim770