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
提交
取消