js for in和for of的區別

2022-06-22 11:27:07 字數 1292 閱讀 5478

for...in 語句用於遍歷陣列或者物件的屬性(對陣列或者物件的屬性進行迴圈操作)。

for ... in 迴圈中的**每執行一次,就會對陣列的元素或者物件的屬性進行一次操作。

使用for-in可以遍歷陣列,但是會存在以下問題:

1.index索引為字串型數字(注意,非數字),不能直接進行幾何運算。

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

3.使用for-in會遍歷陣列所有的可列舉屬性,包括原型。原型方法method和name屬性都會被遍歷出來,通常需要配合hasownproperty()方法判斷某個屬性是否該物件的例項屬性,來將原型物件從迴圈中剔除。

for (var key in myobject) 

}

所以for-in更適合遍歷物件,通常是建議不要使用for-in遍歷陣列

for-of迴圈

for-of可以簡單、正確地遍歷陣列(不遍歷原型method和name)。

var myarray = [1, 2, 4, 5, 6, 7];

myarray.name = "陣列";

myarray.getname = function()

for (var value of myarray)

1.這是最簡潔、最直接的遍歷陣列元素的語法。

2.這個方法避開了for-in迴圈的所有缺陷。

3.與foreach()不同的是,它可以正確響應break、continue和return語句。

因此建議是使用for-of遍歷陣列,因為for-of遍歷的只是陣列內的元素,而不包括陣列的原型屬性method和索引name。

區別總結

簡單總結就是,for in遍歷的是陣列的索引(即鍵名),而for of遍歷的是陣列元素值。

for-in總是得到物件的key或陣列、字串的下標。

for-of總是得到物件的value或陣列、字串的值,另外還可以用於遍歷map和set。

var set = new set();

set.add("a").add("b").add("d").add("c");

// 遍歷set

for (let s of set)

var map = new map();

map.set("a", 1).set("b", 2).set(999, 3);

// 遍歷map

for(let [k, v] of map)

JS for in與for of的區別

for in是遍歷陣列 物件的key 1.index索引為字串型數字,不能直接進行幾何運算 2.遍歷順序有可能不是按照實際陣列的內部順序 3.使用for in會遍歷陣列所有的可列舉屬性,包括原型。4.所以for in更適合遍歷物件,不要使用for in遍歷陣列。let arr 1,2,3 for l...

forEach for in與for of的區別

objarr.foreach function value foreach方法沒辦法使用break語句跳出迴圈,或者使用return從函式體內返回 for var index in objarr 以上 會出現的問題 1.index值 會是字串 string 型別 2.迴圈不僅會遍歷陣列元素,還會遍歷...

for in 和 for of 的對比

fon in和for of最大的區別就是 乙個是對鍵名key的遍歷,乙個是對鍵值value的遍歷 使用for in也能遍歷陣列,但會存在一些問題 index索引為字串型數字,不能直接進行幾何運算 和遍歷順序物件的行為一樣,使用for in會遍歷陣列所有可列舉的屬性,所以原型物件上的方法和屬性也會被遍...