闭包
2022-05-09 本文已影响0人
禾苗种树
-
词法环境
在js中,每个运行的函数,代码块,及整个脚本都有一个内部关联对象(隐藏的)叫做词法环境 lexical environment
词法环境由两部分组成
1.环境记录
2.对外部词法环境的引用(记录),与外部代码相关联 -
闭包
一个记住其外部变量并可以访问这些变量的函数(因为js自带的词法环境使在脚本中的所有变量,函数都都有迹可循)
JavaScript 中的函数会自动通过隐藏的 [[Environment]] 属性记住创建它们的位置,所以它们都可以访问外部变量。
前端开发者通常会被问到“什么是闭包?”,正确的回答应该是闭包的定义,并解释清楚为什么 JavaScript 中的所有函数都是闭包的,以及可能的关于 [[Environment]] 属性和词法环境原理的技术细节。
注意:通常,函数调用完成后,会将词法环境和其中的所有变量从内存中删除。因为现在没有任何对它们的引用了。与 JavaScript 中的任何其他对象一样,词法环境仅在可达时才会被保留在内存中。