最近在看js面向对象编程时接触到“作用域链”这个名词。下面我就总结一下自己的理解。我把作用域链叫做“作用域链接”,因为我觉的我们可以它看做是互联网上的链接,在互联网上从一个站点跳转至另一个站点或者从站点内的一个一面跳转到其他页面都是通过链接完成的。页面布局上设置链接的话,用户就类似被授予权利去访问这些链接里的内容,这写链接里的内容对于用户来说就是可见的。相反,如果页面上没有设置通往某处的链接,即便这个链接里所包含的内容对用户来说是有用的,但是用户是看不到的,这些内容对于用户来说是不可见的。废话少说,下面我们用代码说话:
>>> var a = "pandora";
>>> function test() {
>>> var b = "Pandora_GL";
>>> return a;
>>> }
>>> test();
Pandora
>>> b
b is not defined
这里,变量a属于全局变量,变量b是局部变量 它的作用域就在test()函数内。所以:
* 在test()内, a和b都是可见的。
* 在test()外, a是可见的, b则是不可见的。
对于函数嵌套这种情况,处于内层的函数(即子级函数)既可以访问自身作用域里的变量,也可以访问外层函数(父级函数)包含的变量。
实例说明:
运行结果截图依次为:
<1>.第一个alert()
<2>. 第二个alert().
<3>. 第三个alert().
<4>. 第四个alert()哪??? 对,没啦。。