1

关于for循环,我常常会混淆,在此做一下梳理。

1、for循环

最原始的遍历,获得数组里的值。

var arr1 = [1, 2, 3];
for(var i = 0 ; i< arr1.length; i++){
  console.log(arr1[i]);
}
2、for……in

for……in,遍历对象的属性名称,键名key。在数组中,每个元素的下标索引被视为数组的属性名称。所以用for……in遍历数组时,实际上获得的值是索引值。

var arr = ["Hello", "world"];
arr.name = "index";
for (var k in arr){
  console.log(k);   // 0,1,name
  console.log([arr[k]); // 属性对应的值 "Hello", "world"
}
console.log(arr.length); // 2

从结果,我们可以看到,当你为arr添加一个新的属性名:name时,遍历时,会把这个属性包括在内,但是,arr.length还是原来的。

3、for……of(ES6新增的循环语法)

for……of,遍历对象的属性值,键值value。它只循环集合本身的元素

var arr = ["Hello", "world"];
arr.name = "index";
for (var k in arr){
  console.log(k);   // Hello, world
}
console.log(arr.length); // 2

同时,for……of支持遍历其他集合,如字符串、Set和Map对象。再有,它不同于forEach,可以使用 break 语句跳出循环,也可以使用 continue 和 return 语句。

4、forEach

forEach其实是for循环的简化版,适合于循环次数未知情况下使用。foreach 方法没办法使用 break 语句跳出循环,也无法使用return从函数体内返回。


默默
252 声望5 粉丝