Javascript console.log在for循环中返回未定义
我在一个由3个按钮组成的数组中循环 在for循环中,我将事件侦听器附加到每个按钮 我正在尝试将当前循环使用的按钮console.log记录下来,但它返回未定义Javascript console.log在for循环中返回未定义,javascript,Javascript,我在一个由3个按钮组成的数组中循环 在for循环中,我将事件侦听器附加到每个按钮 我正在尝试将当前循环使用的按钮console.log记录下来,但它返回未定义 let buttons=document.getElementsByClassName('btn'); 对于(i=0;i
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在阅读链接的问题后有特定的担忧,他们应该发布这个问题。这就是为什么要快速总结作为评论,而不是回答。