使用for ... in语法添加事件侦听器会导致某种范围问题?

时间:2016-08-12 03:05:19

标签: javascript closures

我想使用下面的模式将事件侦听器添加到一组按钮。在下面的代码中,我希望点击a按钮将a打印到控制台,但会打印cb也是如此。看起来有某种范围问题,似乎某种关闭可以解决问题,但我无法弄清楚如何做到正确。

var buttons = {
  a: document.getElementById('a'),
  b: document.getElementById('b'),
  c: document.getElementById('c')
}

for (var key in buttons) {
  buttons[key].addEventListener('click', function() {
    console.log(key);
  });
}
<button id="a">a</button>
<button id="b">b</button>
<button id="c">c</button>

0 个答案:

没有答案