for in與for of的區別

2022-07-09 07:42:10 字數 815 閱讀 5874

針對for in和for of這兩個遍歷方法的特點分析一下,對這兩個遍歷方法有個清晰的認識,先上**為敬:

array.prototype.method = function()

var myarray = [67,8,9,0];

myarray.name = "校長";

for(let i in myarray)

輸出結果:

根據輸出結果可以看出for in的缺點:

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

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

3.使用for in會遍歷陣列所有的可列舉屬性,包括原型。例如上栗的原型方法method和name屬性

for of的實測:

array.prototype.method = function()

var myarray = [67,8,9,0];

myarray.name = "校長";

for(let i of myarray)

輸出結果:

總結:所以for in更適合遍歷物件,不要使用for in遍歷陣列。而for of更適合遍歷陣列,

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

for of遍歷的只是陣列內的元素,而不包括陣列的原型屬性method和索引name

for of 與 for in的區別

1 2 3 4 5 6 7 8 array.prototype.method function varmyarray 1,2,4,5,6,7 myarray.name 陣列 for varindexinmyarray 使用for in 也可以遍歷陣列,但是會存在以下問題 1.index索引為字串型數...

for in與for of的區別

1.遍歷物件的可列舉屬性名 enumerable true,通過object.defineproperty obj,prop,descriptor 修改,通過obj.propertyisenumerable prop 進行判斷 2.向上查詢原型鏈中的屬性 如僅想遍歷自身屬性,加一層if,通過haso...

for of 與 for in的區別

遍歷陣列通常使用for迴圈,es5的話也可以使用foreach,es5具有遍歷陣列功能的還有map filter some every reduce reduceright等,只不過他們的返回結果不一樣。但是使用foreach遍歷陣列的話,使用break不能中斷迴圈,使用return也不能返回到外層...