js中关于作用域的问题
1、
[code=JScript]
if(true) {
var color = "blue ";
}
alert(color);
[/code]
2、
[code=JScript]
for(var i=0; i <10; i++) {
doSomething(i);
}
alert(i);
[/code]
3、
[code=JScript]
function add(num1, num2) {
var sum = num1 + num2;
return sum;
}
var result = add(10, 20);
alert(sum);
[/code]
为什么第一个程序与第二个程序都说局部变量的作用域是全局的,在外面都可以调用;但第三个程序的sum(局部变量)的作用域不是全局?在外面不能调用呢?
------解决方案--------------------
JS中的变量作用域,只有一种级别,就是函数级。最顶层的window级其实也是一个函数。在这个函数之内还可以构造其它函数,就和我们通过函数来创建对象一样。这样的话,每个嵌套的函数都按嵌套级别存在不同的作用域。子函数可以访问父函数内的变量,反之则不行,兄弟函数之前也不能访问各自内部的变量。