作用域就是一套规则,用于确定在何处以及如何查找变量(标识符)的规则
例:
示例1.png
在foo函数执行的时候,输出一个a变量,这个a变量就是函数第一行定义a变量的代码 var a = 'ccccc'.
再一例:
示例2.png
同样,再输出b的时候发现自己函数内部没有找到变量b,那么就在外层的全局中查找,找到了变量b就停止查找并输出。
两个例子都有查找变量,不同的是第一段代码是在函数中找到变量,第二段代码是在全局中找到b变量。也就是说第一段代码是在函数作用域中找到a变量,第二段代码是在全局作用域中找到b变量。
通俗的说 ** 作用域就是查找变量的地方**
作用域链
如上示例2,在查找b变量的时候,先在函数作用域中查找,没有找到,再去全局作用域中查找,有一个往外层查找的过程,就好像顺着一条链条从下往上查找变量,这条链条,就称之为作用域链。
作用域嵌套
函数作用域肯定实在全局作用域里面的,而函数作用域中又可以继续嵌套函数作用域,如下图:
示例3.png
代码则是:
示例4.png
作者:沉沉___
链接:https://www.jianshu.com/p/05ca23477b5c
网友评论