1. for循環(huán)
for (var index = 0; index < myArray.length; index++) {
console.log(myArray[index]);
}
2. forEach
myArray.forEach( value => console.log(value););
注意: forEach不能使用break語(yǔ)句中斷循環(huán),也不能使用return語(yǔ)句返回到外層函數(shù)
3. for-in
for (var index in myArray) { console.log(myArray[index]); }
警告: 不要使用forin遍歷數(shù)組. 原因:
- 在這段代碼中噪珊,賦給 index 的值不是實(shí)際的數(shù)字位衩,而是字符串“0”、“1”糠聪、“2”婆排,此時(shí)很可能在無(wú)意之間進(jìn)行字符串算數(shù)計(jì)算声旺,例如:“2” + 1 == “21”,這給編碼過(guò)程帶來(lái)極大的不便段只。
- 作用于數(shù)組的 for-in 循環(huán)體除了遍歷數(shù)組元素外腮猖,還會(huì)遍歷自定義屬性。如果你的數(shù)組中有一個(gè)可枚舉屬性 myArray.name翼悴,循環(huán)將額外執(zhí)行一次缚够,遍歷到名為“name”的索引。就連數(shù)組原型鏈上的屬性都能被訪問(wèn)到鹦赎。
- 最糟糕的是,在某些情況下谍椅,這段代碼可能按照隨機(jī)順序遍歷數(shù)組元素。
forin適用于遍歷對(duì)象屬性,但不適用于遍歷數(shù)組古话。
4. for-of (es6)
for (var value of myArray) { console.log(value); }
const arr = ["a", "b", "c"];
for (const [index, elem] of arr.entries()) {
console.log(`index = ${index}, elem = ${elem}`);
}
- 這是最簡(jiǎn)潔雏吭、最直接的遍歷數(shù)組元素的語(yǔ)法
- 這個(gè)方法避開(kāi)了 for-in 循環(huán)的所有缺陷
- 與 forEach()不同的是,它可以正確響應(yīng) break陪踩、continue 和 return 語(yǔ)句
- for-of也可以遍歷string, map對(duì)象, set對(duì)象等其他集合