for in 和for of 的區別

2021-10-01 11:55:28 字數 554 閱讀 4067

最近在學習es6的知識,看到了for of 這新的迴圈方法,所以就測試一下和以前for in有什麼不同,一下是一些不同地方,當然還有其他不同的,暫時還沒有發現:

for … in迴圈由於歷史遺留問題,它遍歷的實際上是物件的屬性名稱。乙個array陣列實際上也是乙個物件,它的每個元素的索引被視為乙個屬性。

當我們手動給array物件新增了額外的屬性後,for … in迴圈將帶來意想不到的意外效果:

var cc= [『a』, 『b』, 『c』];

cc.name = 『hello』;

for (var x in cc)

for … in迴圈將把name包括在內,但array的length屬性卻不包括在內。

for … of迴圈則完全修復了這些問題,它只迴圈集合本身的元素:

var cc = [『a』, 『b』, 『c』];

cc.name = 『hello』;

for (var x of cc)

簡單來說,for in 是取key值 for of是取值 for of 不能用來遍歷物件 for in既可以遍歷物件也可以遍歷陣列

for of 和 for in 的區別

var obj for var key of obj 出錯 uncaught typeerror obj is not iterablevar obj for var key in obj 結果是 a b cvar arr 3 5,7 for var i in arr 結果是 0 1 2var ar...

for in 和for of的區別

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

for in 和 for of 的區別

迴圈型別 獲取鍵值 獲取鍵名 可以遍歷物件 for in 否是 是for of 是否 否let arr red blue yellow 使用for in 遍歷 for let item in arr 0,1,2使用for of 遍歷 for let item of arr red,blue,yell...