---恢复内容开始---
首先要说的是执行环境。在js中这个概念非常基础,但是也非常重要
执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为。每一个执行环境都有一个与之关联的变量对象[variable object]
环境中定义的所有变量和函数都保存在这个对象中,我们编写的代码是无法直接访问到这个对象的,但是解析器在处理数据时会在后台使用它.
实行环境分为两类,一类是全局执行环境,还有一类是局部执行环境.
在web浏览器中全局执行环境被认为是window对象,因此,所有全局对象和函数都是作为window对象的属性和方法创建的
执行环境的销毁:某个执行环境中的所有代码执行完毕后,该环境即被销毁保存在其中的所有变量和函数定义也随之销毁[所谓的代码执行完毕,比如全局环境,直到应用程序退出,例如关闭网页或浏览器时才被销毁]
函数与执行环境:每一个函数都有自己的执行环境。
当代码在一个环境中执行时,会创建变量对象的一个作用域链[scope chain]作用域链的用途是保证对执行环境有权访问的所有变量和函数的有序访问。(意思就是变量对象里面拥有所有的变量与对象,而它的作用域链使用来访问其中的成员的)
作用域链的前端就是当前代码,执行环境所在的变量对象
作用域链的下一个变量对象来自于包含[外部]环境作用域链11条列举下一个对象包含下一个对象包含下一个对象
我对执行环境和作用有点雨点量对象的理解就是可不可以访问到变量或者函数是由变量对象决定的。变量对象是在作用域链上面作用,作用域链上面是否有变量对象就可以判断他是不是可以访问这个函数或变量
真在做臃肿上面的延长作用域链,增加变量对象有两个方法是try catch的catch块和with。
都是在作用链的前端添加一个变量对象。具体实现上,两者稍有不同,
catch块是创建一个新的变量对象,其中包含的是对抛出的错误对象的声明。
而with语句则是添加。
下次讲讲闭包。也是个大麻烦,尽早搞清楚对接下来的学习十分必要
---恢复内容结束---