作用域链
- 概念:作用域链的本质是底层的变量查找机制
- 作用域链查找的规则是什么?
- 在函数被执行的时候,会优先查找当前函数作用域中查找变量。
- 如果当前作用域查不到则会依次逐级查找父级作用域,直到全局作用域。
- 总结:
- 嵌套关系的作用域串联起来形成了作用域链
- 相同作用域链中按照从小到大的规则查找变量。
- 子作用域能够访问父作用域,父级作用域无法访问子级作用域。
如何延长作用域链
作用域链是可以延长的。
延长作用域链:
执行环境的类型只有两种,全局和局部(函数)。但是有些语句可以在作用域链的前端临时增加一个变量对象,该变量对象会在代码执行后被移除。具体来说就是执行这两个语句时,作用域链都会的到加强。
- try-catch 语句的catch块,会创建一个 新的变量对象,包含的是被抛出的错误对象的声明。
- with语句。with语句会将指定的对象添加到作用域链中。