Javascript 访问eventListener内部的外部变量

Javascript 访问eventListener内部的外部变量,javascript,scope,event-listener,Javascript,Scope,Event Listener,在下列情况下: var allBusiness = ["one", "two", "three", "four"] for (var i = 0; i < allBusiness.length; i++) { document.getElementById(allBusiness[i]).addEventListener("click", function () { console.log(allBusiness); }); } 为什么不记

在下列情况下:

    var allBusiness = ["one", "two", "three", "four"]
    for (var i = 0; i < allBusiness.length; i++) {
    document.getElementById(allBusiness[i]).addEventListener("click", function () {
        console.log(allBusiness);
    });
}

为什么不记录相应的名称?如何实现这一点呢?

原因很简单:i不再在您要传递的回调函数的范围内定义

至于如何,我想问一个好问题,你想实现什么?你可以用这个

var allBusiness = ["one", "two", "three", "four"]
for (var i = 0; i < allBusiness.length; i++) {
    document.getElementById(allBusiness[i]).addEventListener("click", function () {
        console.log(this.id);
    });
}
var allBusiness=[“一”、“二”、“三”、“四”]
对于(var i=0;i

p、 注意:我不认为这是解决问题的好方法,但它会得到您想要的

只是一个建议,但是,请尝试在console.log之前将
allBusiness[I]
定义到一个var中。不garuntees@dave
这个
不会引用元素吗?我误读了,你是对的,虽然这没有回答他想要什么,但它确实回答了他问的问题:为什么?很公平,我错过了如何。。。编辑:P
var allBusiness = ["one", "two", "three", "four"]
for (var i = 0; i < allBusiness.length; i++) {
    document.getElementById(allBusiness[i]).addEventListener("click", function () {
        console.log(this.id);
    });
}