为什么onmouseenter函数里面的i值为13?

        var spans = document.getElementsByTagName("span");
        var audios = document.getElementsByTagName("audio");

        for(var i = 0 ; i < spans.length ; i ++){
            spans[i].index = i;
            spans[i].onmouseenter = function(){
                //load保留之前的尾音,重新开始新的
                console.log(i);
                audios[this.index].load();
                audios[this.index].play();
            }
        }

页面上有12个span标签,for循环中spans.length的值为12。而这个函数里面的i值弹出的结果是12而不是0到11,为什么?

阅读 2.1k
3 个回答

跟js闭包作用域有关

因为当mouseenter触发的时候i已经变成13了。你可以看看闭包的概念。

推荐问题
宣传栏