for、forEach、for-in與for-of的區別

let arr=[1,2,3,4,5];
arr.b='100';

for

for(let i=0;i<arr.length;i++){
    console.log(arr[i]);
}

for是編程式

forEach

arr.forEach(function(i){
    console.log(item);
});

forEach是聲明式(不關心如何實現),沒辦法使用 break 語句跳出循環,或者使用return從函數體內返回。

for in

for(let key in arr){
    console.log(key);
}
  1. key會變成字符串(String)類型。
  2. 包括數組的私有屬性也可以打印出來,即循環不僅會遍歷數組元素,還會遍歷任意其他自定義添加的屬性,如,arr上面包含自定義屬性,arr.b,那這次循環中也會出現此b屬性。
  3. 某些情況下,上述代碼會以隨機順序循環數組。

for of

for(let val of arr){
    console.log(val);
}

支持return,並且是值of數組(不能遍歷對象)
1. 可以避免所有 for-in 循環的陷阱
2. 不同於 forEach(),可以使用 break, continue 和 return
3. for-of 循環不僅僅支持數組的遍歷。同樣適用於很多類似數組的對象
4. 它也支持字符串的遍歷
5. for-of 並不適用於處理原有的原生對象

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章