js的执行环境和作用域链

执行环境

js的执行环境就是:定义了变量或函数有权访问的其他数据,决定了它们各自的行为。每个环境都有一个与之相关联的对象,环境中定义的变量和函数都保存在这个对象中。

全局变量就是最外围的环境,通常被认为是window对象。全局变量和局部变量会在环境栈中,当执行环境在执行完环境中的所有代码后会销毁,环境栈会将该栈弹出,定义的变量与函数也会被销毁,而全局变量会在程序退出后销毁。

作用域链

作用域是保证对执行环境有权访问  的所有变量  的有序访问。

链的形成:

作用域链的前端是当前执行环境的变量对象,下一层是当前执行环境的外部环境,下下层是当前执行环境的外部环境的外部环境.....直到最外层是全局。

寻找一个标识符,先从作用域链的最前端的变量对象开始找,没找到就往下一级寻找,直到全局,如果还没找到就报错。

延长作用域链:

延长作用域链的方法就是在作用域前端临时增加一个变量对象,这种方法有两种语句实现:try-catch中的catch,with.

catch:创建一个新的变量对象,其中包含被抛出的错误对象。

with:将指定的对象添加到作用域中。

参考:《Javascript高级程序设计》 第三版

原文地址:https://www.cnblogs.com/ellen-mylife/p/11259441.html