Javascript console.log在for循环中返回未定义

Javascript console.log在for循环中返回未定义,javascript,Javascript,我在一个由3个按钮组成的数组中循环 在for循环中,我将事件侦听器附加到每个按钮 我正在尝试将当前循环使用的按钮console.log记录下来,但它返回未定义 let buttons=document.getElementsByClassName('btn'); 对于(i=0;i

我在一个由3个按钮组成的数组中循环 在for循环中,我将事件侦听器附加到每个按钮 我正在尝试将当前循环使用的按钮console.log记录下来,但它返回未定义

let buttons=document.getElementsByClassName('btn');
对于(i=0;i
a
B

c
您可以使用闭包来实现它

let buttons=document.getElementsByClassName('btn');
for(设i=0,ln=buttons.length;i
a
B
C

在调用处理程序时,
i
被设置为
按钮。长度
。将
用于(let i.
是最简单的解决方案。使用
let
是创建作用域变量的最简单方法。请看我的评论。您能解释一下为什么我们必须创建一个i变量,并在函数中执行所有操作吗?@afaqazi,因为在执行回调时,
i
的增量将超过
的末尾ons.length
。重复的问题详细解释了这一点。如果您尝试使用
ES5
,这将是完全有意义的,但是您的第一行是
let
,因此这打破了该规则。目前您正在创建一个名为
i
的全局变量,是的,OP也这样做了,但是如果您可以使用let,函数范围界定太过分了。事实上,最好不要回答这个问题(删除),因为很明显之前有人问过这个问题。如果OP在阅读链接的问题后有特定的担忧,他们应该发布这个问题。这就是为什么要快速总结作为评论,而不是回答。