出于种种原因,我们有时候需要得到函数的内部变量
。但是,由于在 javascript
中,函数内部能够访问外部的变量,而函数外部却无法访问函数内的的变量。所以,正常情况下,是办不到的。但是,我们可以通过变通的方法来实现。那就是,在函数内部,再定义一个函数。
function demo1(){
var n = 6699;
function demo2(){
alert(n);//6699
};
return demo2;
}
var demo3 = demo1();
demo3();
在上面的代码中,函数demo2
就被包括在 函数demo1
内部,这时 函数demo1
内部的所有局部变量,对函数demo2
都是可见的。但是返过来就不行了,函数demo2
中的所有变量对 函数demo1
都是不可见的。这就是 js 语言的 链式作用域
。
子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量对子对象都是可见的,反之则不成立。既然函数demo2
可以读取函数demo1
中的局部变量,那么只要把 函数demo2
作为返回值,我们就可以在函数demo1
外部读取它的内部变量了。