javascript - 单击此处的每个按钮时计数究竟是如何增加的?

标签 javascript

我很想了解闭包在这组代码中究竟是如何发生的,以及它的实现方式。我在看一个教程,那个人给出了回调函数的例子,他还给出了闭包的例子。

function attachEventListeners() {
    let count = 0
    document.getElementById("clickMe").addEventListener("click", function () {
        console.log("Button Clicked", ++count)
    })
attachEventListeners()

我认为,为了让基于闭包的计数函数起作用,您必须返回该函数并将其分配给一个变量。否则每次调用外部函数时,count 都会初始化为 0。但是它在这里是如何工作的?

最佳答案

闭包本质上是当另一个函数内部的函数超出其自身范围以获取外部函数范围内的变量时的情况。

function attachEventListeners() {
    let count = 0
    document.getElementById("clickMe").addEventListener("click", function () {
        console.log("Button Clicked", ++count)
    })

在此示例中,传递给事件监听器的匿名函数正在获取并递增 attachEventListeners 函数范围内的变量 count

关于javascript - 单击此处的每个按钮时计数究竟是如何增加的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69050778/

相关文章:

javascript - Twilio Node.js API - 使用 'Dial' 转发调用时出现问题

javascript - 在插入符号位置的文本区域中插入文本

javascript - 将新加载的图像添加到卷中的回调函数

javascript - 操纵 div 内容的形式

javascript - 使用 fabricjs 模拟自由绘图

javascript - 在 react 可观察中使用史诗的一个输出作为史诗的另一个输入

javascript - 如何将 svg 移动/平移到某个位置?

javascript - 试图理解 javascript 代码

javascript - Bluebird 相当于 Q Promise.post

javascript - 为什么我的图像路径在 react 中不起作用?