JS中的闭包
本文最后更新于:1 小时前
闭包是什么?
一个函数和对其周围状态(lexical environment, 词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包。
也就是说,闭包让你可以在一个内层函数中访问到其外层函数的作用域
在JS中,每创建一个函数,闭包就会在函数创建的同时创建出来,作为函数内部与外部连接起来的一座桥梁
1 |
|
displayName()
函数没有自己的局部变量。然后,由于闭包的特性,他可以访问到外部函数的变量
《你不知道的JavaScript》: 当函数可以记住并访问所在的词法作用域时,就产生了闭包
词法作用域:指的是定义表达式并能被访问的区间,也就是一个声明(定义变量、函数等)的词法作用域就是它被定义时所在的作用域
闭包的经典使用场景
-
return 回一个函数
-
函数作为一个参数
-
循环赋值
1 |
|
-
防抖、节流
闭包的危害
-
容易造成内存泄漏
内层函数调用的外部变量无法得到释放,会产生内存泄漏
如果不是某些特定任务需要使用闭包,在其他函数中创建函数是不明智的,因为闭包在处理速度和内存消耗方面对脚本性能具有负面影响
JS中的闭包
https://blog.seasalt-haiyan.top/2024/04/18/JS中的闭包/