1.执行环境 即是 作用域,每个 执行环境 都有一个对应的 变量对象,用来包含在该环境创建的 变量和函数。
2.全局执行环境 根据ECMAScript的运行平台决定,例如 浏览器中的 全局执行环境对象 是 window (变量)对象,nodejs的 全局执行环境对象 是 global(变量)对象。
3.在环境中创建的 变量和函数 是作为该环境对应的 变量对象 的属性和方法存在。例如 创建一个全局变量 num = 1,此时的num是window的一个属性名,而属性值为1,可用window.num来调用。
4.函数内部是 局部作用域(ES6有了块级作用域),函数的参数存放在arguments对象中,而arguments对象就是 该函数作用域中变量对象上的第一个属性(该属性结构为类似数组的对象)。
5.一个执行环境的作用域链是由该执行环境的 变量对象 和外部环境的 变量对象 以及下一个 外部变量对象 依次连接组成,全局环境变量对象 始终是最后一个对象,当前执行环境的 变量对象 始终是作用域链的最前端。
ps: 看了阮老师文章后的总结 ,原文:学习Javascript闭包(Closure)
网友评论