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

关于javascript作用域的理解
学习的时候,看到这么一句话:


Javascript具有函数级的作用域。这意味着定义在函数内部的变量在函数外部不能被访问。

Javascript的作用域又是词法性质的,这意味着函数运行在定义它的作用域中,而不是在调用它的作用域中。


这两句话要怎么理解呢?最好举个例子哈,十分的感谢!



------解决方案--------------------
第一句应该不难理解,第二句:
JScript code
var a = 'window.a'

function fn1(){
    alert(a);
}

function fn2(){
    var a = 'fn2.a';
    fn1(); //window.a (因为fn1运行在定义它的作用域中所以。。。)
}

fn2();

------解决方案--------------------
JScript code
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 (定义在函数内部的变量在函数外部不能被访问)

------解决方案--------------------
函数可以构造对象类,在对象类中又可以定义函数方法,所定义的方法当然只能对这个对象类有效,而不能随便跑到其它对象身上去产生作用.