对于有块级作用域的语言来说,for语句初始化变量的表达式所定义的变量,只会存在于循环的环境中。
而对于javascript来说,由for循环创造的变量,即使在for循环结束后,也依旧会存在于外部执行环境中。
for(var i=0;i<10;i++){
doSomething(i);
}
alert(i); //10
以下两种情况的作用域不同:
function add(num1,num2){
var sum=num1+num2;
return sum;
}
var result=add(10,20);
alert(sum); //出现错误因为sum不是有效变量
function add(num1,num2){
sum=num1+num2;
return sum;
}
var result=add(10,20);
alert(sum); //30