JavaScript闭包是什么?能总结分享下它的特点和用途吗?
- 内容介绍
- 文章标签
- 相关推荐
本文共计5496个文字,预计阅读时间需要22分钟。
本章节为家长带来关于JavaScript中闭包的相关知识,包括从堆栈的角度看待闭包、闭包的共享变量问题等相关问题,希望对家长有所帮助。
1. 闭包自结+闭包概念:函数执行后返回
本篇文章给大家带来了关于JavaScript中闭包的相关知识,其中包括从堆栈的角度看待闭包、闭包的共享变量问题等相关问题,希望对大家有帮助。
1.闭包自结闭包概念:
函数执⾏后返回结果是⼀个内部函数,并被外部变量所引⽤,如果内部函数持有被执⾏函数作⽤域的变量,即形成了闭包。可以在内部函数访问到外部函数作⽤域。
使⽤闭包,⼀可以读取函数中的变量,⼆可以将函数中的变量存储在内存 中,保护变量不被污染。⽽正因闭包会把函数中的变量值存储在内存中,会对内存有消耗,所以不能滥⽤闭包,否则会影响⽹⻚性能,造成内存泄漏。当不需要使⽤闭包时,要及时释放内存,可将内层函数对象的变量赋值为null。
闭包特点:一个外函数生成的多个闭包内存空间彼此独立。
闭包应用场景:
- 在内存中维持变量:如果缓存数据、柯里化
- 保护函数内的变量安全:如迭代器、生成器。
缺点:闭包会导致原有的作用域链不释放,造成内存的泄漏。
- 内存消耗有负⾯影响。因内部函数保存了对外部变量的引⽤,导致⽆法被垃圾回收,增⼤内存使⽤量,所以使⽤ 不当会导致内存泄漏
- 对处理速度具有负⾯影响。
本文共计5496个文字,预计阅读时间需要22分钟。
本章节为家长带来关于JavaScript中闭包的相关知识,包括从堆栈的角度看待闭包、闭包的共享变量问题等相关问题,希望对家长有所帮助。
1. 闭包自结+闭包概念:函数执行后返回
本篇文章给大家带来了关于JavaScript中闭包的相关知识,其中包括从堆栈的角度看待闭包、闭包的共享变量问题等相关问题,希望对大家有帮助。
1.闭包自结闭包概念:
函数执⾏后返回结果是⼀个内部函数,并被外部变量所引⽤,如果内部函数持有被执⾏函数作⽤域的变量,即形成了闭包。可以在内部函数访问到外部函数作⽤域。
使⽤闭包,⼀可以读取函数中的变量,⼆可以将函数中的变量存储在内存 中,保护变量不被污染。⽽正因闭包会把函数中的变量值存储在内存中,会对内存有消耗,所以不能滥⽤闭包,否则会影响⽹⻚性能,造成内存泄漏。当不需要使⽤闭包时,要及时释放内存,可将内层函数对象的变量赋值为null。
闭包特点:一个外函数生成的多个闭包内存空间彼此独立。
闭包应用场景:
- 在内存中维持变量:如果缓存数据、柯里化
- 保护函数内的变量安全:如迭代器、生成器。
缺点:闭包会导致原有的作用域链不释放,造成内存的泄漏。
- 内存消耗有负⾯影响。因内部函数保存了对外部变量的引⽤,导致⽆法被垃圾回收,增⼤内存使⽤量,所以使⽤ 不当会导致内存泄漏
- 对处理速度具有负⾯影响。

