学习的时候,看到这么一句话:
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 (定义在函数内部的变量在函数外部不能被访问)
------解决方案--------------------
函数可以构造对象类,在对象类中又可以定义函数方法,所定义的方法当然只能对这个对象类有效,而不能随便跑到其它对象身上去产生作用.