日期:2014-05-16  浏览次数:20329 次

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级其实也是一个函数。在这个函数之内还可以构造其它函数,就和我们通过函数来创建对象一样。这样的话,每个嵌套的函数都按嵌套级别存在不同的作用域。子函数可以访问父函数内的变量,反之则不行,兄弟函数之前也不能访问各自内部的变量。