Js中for in 和for of的區別

2021-10-10 21:00:37 字數 1866 閱讀 3075

for in的使用

array.prototype.

sayhello

=function()

; array.prototype.str =

"我是陣列原型的字串"

;//定義乙個陣列

var arr =[1

,2,3

,4];

console.

log(arr)

;//當前列印的沒有原型上的屬性和方法 [1, 2, 3, 4]

//使用for in迴圈

for(

let index in arr)

//輸出結果為 0,1,2,3,4,name,str,sayhello

object.prototype.

sayhello

=function()

; object.prototype.str =

"world"

;var myobject =

; console.

log(myobject)

;//輸出 ;

//使用for in迴圈物件

for(

let index in myobject)

//輸出結果 首先輸出的是物件的屬性名,再是物件原型中的屬性和方法, name,age,str,sayhello

//如果不想讓其輸出原型中的屬性和方法,可以使用hasownproperty方法進行過濾

for(

let index in myobject)

}//輸出結果為name,age

//你也可以用object.keys()方法獲取所有的自身可列舉屬性組成的陣列。

console.

log(

"object.keys(myobject)"

, object.

keys

(myobject));

//["name", "age"]

結論

1.for in 應用於陣列迴圈時:返回的是陣列的下標和陣列的屬性和原型上的方法和屬性

2.for in 應用於物件時:迴圈返回的是物件的屬性名和原型中的方法和屬性。

for of的使用

//for of 應用在陣列中

array.prototype.

sayhello

=function()

; array.prototype.str =

"我是陣列原型的字串"

;//定義乙個陣列

var arr2 =[10

,20,30

,40];

console.

log(arr2)

;//當前列印的沒有原型上的屬性和方法 [10, 20, 30, 40]

//使用for of迴圈

for(

let index of arr2)

//輸出結果為 10,20,30,40 遍歷的是陣列元素值,沒有原型上的屬性和方法

object.prototype.

sayhello2

=function()

;var myobject2 =

;for

(let key of myobject2)

//報錯uncaught typeerror

結論

1.for of 應用於陣列迴圈時: 遍歷的是陣列元素值,沒有原型上的屬性和方法

for in遍歷的是陣列的索引(即鍵名),而for of遍歷的是陣列元素值。 所以for in更適合遍歷物件,不要使用for in遍歷陣列。

js中for of 和for in區別?

先說結論 1.推薦在迴圈物件屬性的時候,使用for in 在遍歷陣列的時候的時候使用for of。2.for in迴圈出的是key,for of迴圈出的是value 3.注意,for of是es6新引入的特性。修復了es5引入的for in的不足 4.for of不能迴圈普通的物件,需要通過和obj...

js中的for in 和 for of 的區別

for.in和for.of的區別 for.in是es5的標準,該方法遍歷的是物件的屬性名稱 key 鍵名 乙個array物件也是乙個物件,陣列中的每個元素的索引被視為屬性名稱,所以在使用for.in遍歷array時,拿到的是每個元素索引 一般用於遍歷物件自身的和繼承的可列舉屬性。以及物件從建構函式原...

for in 和 for of 的對比

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