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循环的区别表格:
图摘自:简书-->痦子