var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
alert(a);
为什么弹出的是1
1 回答
已采纳
Ewall_
TA贡献27条经验 获得超9个赞
1、函数声明首先被提升,然后才是变量。
2、在函数域里定义一个和外部变量一样名称的变量时,变量的声明会提升至第一句,赋值则不会变
所以就相当于:
function b(){
function a(){}//b函数作用域里有一次函数声明提升
a=10;
return;
}
var a;
//以上是函数声明和变量声明的提升;但是变量声明时,赋值则不会变,仅是提升而已
a=1;
b();
alert(a);//1添加回答
举报
0/150
提交
取消
