1. 程式人生 > >for系迴圈(for,for in,forEach,for of)一較高下~

for系迴圈(for,for in,forEach,for of)一較高下~

想先說幾句,我編輯即將完成的文章,因為不小心按錯了滑鼠鍵,就一切完犢子了。

都2018年了,網際網路世界依然會發生這種痛心疾首的小事情,我不知道該和CSDN說點什麼……。

----------------------------------回到正文------------------------------------------

這兩天學習ES6語法,認識了迄今為止最得人心的for of 迴圈,不由想起了for迴圈和ES5階段結識的for in和forEach迴圈家族。這篇文章,就是把他們扯出來,較較高下。

for迴圈

var array= ['a','b','c']; 
for (var i = 0; i < array.length; i++) {
    console.log(i);         //輸出 0 1 2
    console.log(array[i]);        //輸出 0 1 2
}

通常,我們使用for來遍歷陣列中得元素,但後續他的家族又龐大起來。 

for in 迴圈

var array =['a','b','c'];

for (var i in array ){

    console.log(i)        //輸出 0 1 2
    
    console.log(array[i])            //輸出a b c
}


var girl ={name:'linda',age:18};

for (var i in girl  ){

    console.log(i)        //輸出 name age
    
    console.log(girl[i])            //輸出linda 18
}

用for迴圈進行遍歷時,如果是物件,則 i 代表的是屬性,

如果是陣列,則代表的是“鍵”;

for-in迴圈用來遍歷物件屬性、遍歷資料—例如陣列中的值、遍歷其它的集合、DOM NodeList、字元。

for in 迴圈就連陣列原型鏈上的屬性都能被訪問到。 最讓人震驚的是,在某些情況下,這段程式碼可能按照隨機順序遍歷陣列元素。 簡而言之,for-in是為普通物件設計的,你可以遍歷得到字串型別的鍵,因此不適用於陣列遍歷。(引自網路) 

forEach迴圈

var array= ['a','b','c']; 

array.forEach(function (value) {

    console.log(i)      //輸出 0 1 2

    console.log(value);        //輸出a b c
});        

缺點:不能使用break語句中斷迴圈,也不能使用return語句返回到外層函式。 

for of 迴圈

var array= ['a','b','c']; 

for(v of array){
    
    console.log(v)    //輸出 a b c
}

我們知道for in 迴圈用於遍歷陣列,類陣列或物件,ES6中新引入的for of迴圈功能相似,不同的是每次迴圈它提供的不是序號而是值

其強大之處在於:這是最簡潔、最直接的遍歷陣列元素的語法 這個方法避開了for-in迴圈的所有缺陷 與forEach()不同的是,它可以正確響應break、continue和return語句。

寫到這裡,我想以後遍歷物件就用for in,而遍歷陣列時就用ES6推出得for of吧!

如果您看到這篇文章,有異議,請說出來吧!