关于javascript作用域的理解
学习的时候,看到这么一句话:
Javascript具有函数级的作用域。这意味着定义在函数内部的变量在函数外部不能被访问。
Javascript的作用域又是词法性质的,这意味着函数运行在定义它的作用域中,而不是在调用它的作用域中。
这两句话要怎么理解呢?最好举个例子哈,十分的感谢!
[解决办法]
第一句应该不难理解,第二句:
var a = 'window.a'function fn1(){ alert(a);}function fn2(){ var a = 'fn2.a'; fn1(); //window.a (因为fn1运行在定义它的作用域中所以。。。)}fn2();
[解决办法]
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 (定义在函数内部的变量在函数外部不能被访问)
[解决办法]
函数可以构造对象类,在对象类中又可以定义函数方法,所定义的方法当然只能对这个对象类有效,而不能随便跑到其它对象身上去产生作用.