5

関数をイベントリスナーに追加するときの違いと、その影響を理解しようとしています。

var buttons = document.getElementsByTagName('button');
for (i = 0, len = 3; i < len; i++) {
    var log = function(e) {
        console.log(i);
    }
    buttons[0].addEventListener("click", log);
}

for (i = 0, len = 3; i < len; i++) {
    function log(e) {
        console.log(i);
    }
    buttons[1].addEventListener("click", log);
}

http://jsfiddle.net/paptd/

最初のボタンはconsole.log3 回発火しますが、2 番目のボタンは 1 回だけ発火します。

通常の状況でイベント リスナーに関数を追加する場合、なぜ、また何を使用する必要がありますか?

4

1 に答える 1