JavaScript变量提升求解惑
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
alert(a);
为什么弹出的是1
1回答
-
Ewall_
1、函数声明首先被提升,然后才是变量。2、在函数域里定义一个和外部变量一样名称的变量时,变量的声明会提升至第一句,赋值则不会变所以就相当于:function b(){
function a(){}//b函数作用域里有一次函数声明提升
a=10;
return;
}
var a;
//以上是函数声明和变量声明的提升;但是变量声明时,赋值则不会变,仅是提升而已
a=1;
b();
alert(a);//1