var a=function(){ alert(1); }; function a(){ alert(2); }a();为什么弹1?呢
3 回答
已采纳

qq_冲哥_0
TA贡献40条经验 获得超30个赞
JS 函数声明提前,解析时函数声明自动提前到执行环境的顶部。
实际上执行顺序是
function a(){
alert(2);
}
var a=function(){
alert(1);
};
弹1

乱舞的旋律
TA贡献105条经验 获得超38个赞
var 和function 声明的都会“提升”,就是 他们会在执行已经存在,var 声明的虽然存在了 但还没赋值,
所以 一开始
var a=function(){
alert(1);
}; 是undefined
后来
function a(){
alert(2);
}
执行a()前被赋值了
a=function(){
alert(1);
};
所以是1

Its_forever
TA贡献361条经验 获得超328个赞
你现在这样就是弹出的1啊。或者:
var a=function(){ alert(1); }; function a1(){ alert(2); } a(); a1();
这样,先弹1,再弹2.
添加回答
举报
0/150
提交
取消