1. 程式人生 > >全面解析js中的for迴圈

全面解析js中的for迴圈

JavaScript誕生已經有20多年了,我們一直使用的用來迴圈一個數組的方法是這樣的:

for(var index=0;index<myArray.length;index++) {

  console.log(myArray[index]);

}

自從JavaScript5起,我們開始可以使用內建的forEach方法:

myArray.forEach(function (value) {

  console.log(value);

});

寫法雖然簡單了很多,但是有很多的短處:不能中斷迴圈(使用break或continue)

for-in實際是為迴圈“enumerable”(可列舉的物件)物件設計的

var obj={a:1,b:2,c:3};

for(var prop in obj) {

  console.log("obj."+prop+ "=" +obj[prop]);

}

// 輸出:// "obj.a = 1"// "obj.b = 2"// "obj.c = 3"也可以用來迴圈一個數組:不推薦這樣做在for in函式中變數以字串的形式出現,這時候在函式中操作a[x+1]的話是無效的,x+1會進行字串拼接。因為:陣列的index跟普通的物件不一樣,最重要的數值序列指標總之:for-in是用來迴圈帶有字串key物件的方法for-of迴圈JavaScript6裡引入了一種新的迴圈方法,就是for-of迴圈,既比傳統的for迴圈程式碼簡潔,同時彌補了forEach和for-in迴圈的短板for(var value of myArray) {  console.log(value);}for-of的語法看起來跟for-in很相似,但她的功能卻豐富的多,能迴圈很多東西for-of迴圈使用例子:let iterable=[10,20,30];for(let value of iterable) {  console.log(value);//10   20   30}我們可以使用替代,這樣他就變成了在迴圈裡的不可修改的靜態變數let iterable=[10,20,30];for(const value of iterable) {  console.log(value);//10 20 30}迴圈一個字串:

let iterable = "boo";
for (let value of iterable) {
console.log(value);
}
// "b"
// "o"
// "o"

let iterable = new Uint8Array([0x00, 0xff]);for (let value of iterable) {console.log(value);}// 0// 255let iterable = new Map([["a", 1], ["b", 2], ["c", 3]]);for (let [key, value] of iterable) {console.log(value);}// 1// 2// 3for (let entry of iterable) {console.log(entry);}// [a, 1]// [b, 2]// [c, 3]let iterable = new Set([1, 1, 2, 2, 3, 3]);
for (let value of iterable) {console.log(value);}// 1// 2// 3

迴圈一個 DOM collection

迴圈一個DOM collections,比如 NodeList ,之前我們討論過 如何迴圈一個NodeList ,現在方便了,可以直接使用for-of迴圈:

let articleParagraphs = document.querySelectorAll("article > p");for (let paragraph of articleParagraphs) {  paragraph.classList.add("read");}