我理解的foreach, for in, for of 之間的異同

wait.發表於2018-10-25

我所lforEach() 方法用於呼叫陣列的每個元素,並將元素傳遞給回撥函式。

注意: forEach() 對於空陣列是不會執行回撥函式的。

示例程式碼

 var arr = [4, 9, 16, 25];
 arr.forEach(function(value, index) {
     console.log(index+': '+value+'\n');
 });
複製程式碼

結果如下

我理解的foreach, for in, for of 之間的異同

for/in 語句用於迴圈物件屬性。

迴圈中的程式碼每執行一次,就會對陣列的元素或者物件的屬性進行一次操作。

示例程式碼

var person = {
    name: 'jack',
    age: 18,
    gender: 'male'
};
for(key in person) {
    console.log(key+': '+person[key]+'\n');
}
複製程式碼

結果如下

我理解的foreach, for in, for of 之間的異同

需要注意的是,如果使用for in語句遍歷陣列,可能會出現以下問題:

  1. 索引為字串型別,不能直接進行幾何運算。

  2. 遍歷順序有可能不是按照實際陣列的內部順序。

  3. 使用for in會遍歷陣列所有的可列舉屬性,包括原型。

如下所示

var arr = [12, 43, 19];
 Array.prototype.index = 110;//這裡的原型屬性也會被列印出來
 for(var index in arr) {
     console.log(index+': '+arr[index]+'\n');
 }
複製程式碼

執行結果

我理解的foreach, for in, for of 之間的異同

for of語句和for in 語句相比使用更方便,它是ES6新提出的遍歷陣列的方式,

具體使用

var arr = [12, 43, 19];
 Array.prototype.index = 110;//此原型屬性不會被列印出來
 for(var value of arr) {
     console.log(value+'\n');
 }
複製程式碼

結果如下

我理解的foreach, for in, for of 之間的異同

綜述:foreach更多的用來遍歷陣列,但使用比較複雜;for in 一般常用來遍歷

物件;for of 用來遍歷陣列非常方便且比較安全。

相關文章