for...in、for...of和forEach

let arr = [1,2,3,4,5,6];
        arr.name="AAA";
        for(var i in arr){
            //遍历的实际是对象的属性名臣,每一个元素的索引被视为一个属性
            //当我们手动给Array对象添加一个额外的属性,for...in将会带来意外效果
            console.log(i,typeof i);//1,2,3,name
        }
        for(var i of arr){
            //for ...of则支循环本身的元素
            //但是ES6,对于低版本的浏览器支持不是很好,如IE6,但现在估计绝了
            console.log(i,typeof i);//123
        }
        arr.forEach((element,index,array)=>{
            //它接收一个函数,每次迭代就自动回调该函数
            //forEach本身无法跳出循环,必须遍历完所有的数据才能结束

            /**
             *element:指当前元素的值 
             * index:指向当前的索引
             * array:指向array的本身
             */
           
            console.log(index,element)
            
        })

 附加一张for循环的区别表格:

图摘自:简书-->痦子

原文地址:https://www.cnblogs.com/mwxz/p/13360638.html