学习的时候,看到这么一句话:
Javascript具有函数级的作用域。这意味着定义在函数内部的变量在函数外部不能被访问。Javascript的作用域又是词法性质的,这意味着函数运行在定义它的作用域中,而不是在调用它的作用域中。
这两句话要怎么理解呢?最好举个例子哈,十分的感谢!

解决方案 »

  1.   

    第一句应该不难理解,第二句:
    var a = 'window.a'function fn1(){
    alert(a);
    }function fn2(){
    var a = 'fn2.a';
    fn1(); //window.a (因为fn1运行在定义它的作用域中所以)
    }fn2();
      

  2.   

    var a = 'window.a'function fn1(){
    alert(a);
    }function fn2(){
    var a = 'fn2.a';
    var b = 'fn2.b';
    fn1(); //window.a (因为fn1运行在定义它的作用域中所以)
    }fn2();
    alert(b) //ReferenceError: b is not defined (定义在函数内部的变量在函数外部不能被访问)