函数里面变量声明加var在函数作用域里存在变量提升,此时在声明并给b赋值的时候只是在testResult方法里声明了变量a但是并没有赋值所以此时a的值是undefined,赋值是在后面var a = 200;才赋值的。
var a = 100;
function testResult(){
var b = 2 * a;
var a = 200;//这里a是函数作用域里的a
var c = a / 2;
alert(b);
alert(c);
}
testResult();
var a = 100;
function testResult(){
var b = 2 * a;
a = 200;//这里a还是全局的a
var c = a / 2;
alert(b);
alert(c);
}
testResult();
var a = 100;
function testResult(){
var b = 2 * a;//这里a用的是全局作用域里的a
var c = a / 2;
alert(b);
alert(c);
}
testResult();
a在函数里有没有重新被声明以及声明位置不同alert结果不同。