闭包

Thursday, December 31, 2020

闭包是一个特殊的对象。

凡是没有将闭包,定义为对象的说法,都是错误的。

词法作用域

词法作用域指的是静态关系,在代码编写时,语法规范已经可以确定作用域范围

JavaScript 的词法作用域通过函数的 [[Scopes]] 属性来具体体现。而函数的 [[Scopes]] 属性,是在预解析阶段确认。

通过词法作用域,可以访问自身上下文声明的变量外,还可通过[[Scopes]]访问其它作用域中的声明

能够访问自身的变量 ,具体体现为当前函数上下文中创建的 Local 对象。而其他的,则全部都体现在函数的 [[Scopes]] 属性中

img

….