針對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也不能返回到外層...