当JavaScript变量名和函数名相同时会发生什么?
我有以下代码,在其中我声明了一个函数,然后在它之后声明了一个与函数同名的变量:
function a(x) {
return x * 2;
}
var a;
alert(a);
我期望它会弹出undefined
,但是如果我运行它,弹出框将会显示以下内容:
function a(x) {
return x * 2
}
如果我给变量赋值(比如var a = 4
),弹出框将会显示该值(4
),但如果没有这个改变,a
会被识别为一个函数。
为什么会发生这种情况?