js变量和函数的问题
一.变量提升
alert(a
);
a();
var a
= 3;
function a() {
alert(10);
}
alert(a
);
a
= 6;
a();
结果1: (弹窗1:) function a() { alert(10); } (弹窗2:)10 (弹窗3:)3 报错:a不是函数。 原因1: 函数声明优先于变量声明,声明提升之后a为函数,a=3之后,a成了个变量。
alert(a
);
a();
var a
= 3;
var a = function() {
alert(10);
}
alert(a
);
a
= 6;
a();
结果2: (弹窗:)undefined (第二行a();)报错:a不是函数。 原因2: 提升都是var a; 所以弹窗时a为undefined,是个变量。