for和foreach的一点总结

两者都是数组的循环遍历,但是区别还是有点;

for循环,如果块内有事件操作,那么i是不会等事件操作时候在依次增加,而是一次性走完,,也就是依靠下标定位,下标已经走完了,而foreah是依次增加,它是依靠里面每个元素定位,可能语言不带明白,一个例子说明一下

首先for的例子:

var tag=document.getElementsByTagName("button"),i= 0,len=tag.length;
    for(;i<len;i++){
        (function(i){
            tag[i].onclick=(function(){
                console.log(i)

                console.log(tag[i].innerHTML)
            })
        })(i)
    }
这是经典的闭包实例,如果用for+var,就必须闭包,或者用this,不然报错

再看foreach:

[].slice.call(tag).forEach(function(item,i){
        item.onclick=function(){
console.log(i) console.log(item.innerHTML) } }) 由于foeach是根据每个元素定位,所以正常

  

原文地址:https://www.cnblogs.com/lyz1991/p/5468106.html