你不知道的Javascript:第一章,精简图示版
一、作用域是什么?
问题:声明的变量住在哪?程序需要时怎么找到它们?
解决这个问题,需要一套用来储存变量+便利寻找的规则,这套规则就是作用域。
1.1 编译原理
编译:程序中一段源代码执行前要经历的所有步骤,传统编译语言的流程一般有三个:词法分析(分词)、语法分析(解析)、代码生成;

1.2作用域嵌套
作用域是根据名称查找变量的一套规则,实际情况中,通常需要同时顾及多个作用域。
当存在包含关系的时候,就发生作用域的嵌套;引擎从当前执行作用域开始,由内到外逐层寻找,直到找到该变量,或者到达最外层(全局作用域)也没找到为止。
可以理解为你在家找钥匙,先在桌子上找,没有,再去客厅找,没有,再整个家都翻一遍。因为你知道进门的时候是用钥匙开的门,所有丢也只会丢在家里。如果家里也找不到就放弃不找了。
这样一条向更大作用域范围寻找的路径链路,被称为作用域链

网友评论