JavaScript 中的闭包

你好,在这篇文章中,让我们学习闭包。 闭包在 javascript 中至关重要,因为它们允许函数从其父作用域访问变量,即使在父函数关闭之后也是如此。这对于需要随着时间的推移记住数据的函数至关重要,例如回调函数或维护状态。这里要记住的一点是父作用域中未使用的变量将被垃圾收集。 定义:闭包是捆绑在一起(封闭)的函数及其周围状态(词法环境)的引用的组合。换句话说,闭包让函数可以访问其外部作用域。在 javascript 中,每次创建函数时都会创建闭包。基本上闭包可以访问:立即学习“Java免费学习笔记(深入)”;他们自己的范围外部函数的范围全球范围奖励积分词法作用域:内部函数可以访问外部作用域中的变量。 让我们通过例子来理解。 示例q> 编写一个函数createcounter。它应该接受一个初始整数 init。它应该返回一个具有三个函数的对象。这三个函数是:increment() 将当前值增加 1,然后返回。decrement() 将当前值减 1 然后返回。reset() 将当前值设置为 init,然后返回它。请参阅下面的注释代码以获取 init = 5 案例示例。 解决方案var createCounter = function(init) { const INITIAL_VALUE = init; return { increment: () => ++init, decrement: () => --init, reset: () => init=INITIAL_VALUE, }};/** * const counter = createCounter(5) * counter.increment(); // 6 * counter.reset(); // 5 * counter.decrement(); // 4 */登录后复制说明:在其词法范围内捕获 init 变量。即使在createcounter执行完成后也可以返回可以访问和修改init的方法。创建只能通过返回的方法访问的私有、持久状态 (init)。允许创建多个独立的计数器,每个计数器都有自己的封装状态。如果您有任何疑问或建议,请随时在评论中添加。这个问题取自leetcode。链接最后请记住,脚本中的每个闭包都可以访问全局声明的变量。 我希望你现在对闭包有了很好的理解。感谢您的阅读 以上就是JavaScript 中的闭包的详细内容,更多请关注我的其它相关文章!
posted @ 2024-09-20 20:35  aow054  阅读(1)  评论(0编辑  收藏  举报