詳解Js裏的for…in和for…of的用法

這篇文章主要介紹了Js裏的for…in和for…of的用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨着小編來一起學習學習吧

之前看編程方法學,for循環的基本格式是

for(init;test;step ){
 statement
}
//例如
for(int i=0,i<10;i++){
 ...
}

後來接觸了python,for循環的格式更加的簡單優雅,只要一個for ……in語句就可以直接遍歷對象。

for i in arry

今天看廖雪峯的官網,居然看到了js裏更神奇的操作,for ……of循環,這個類似於python的for ……in循環了,雖然js裏也有for ……in循環,可是遍歷的是對象的屬性,類似於鍵值對裏的鍵key,當它遍歷array的時候遍歷的是array的索引,

var a = ['A', 'B', 'C'];
for (var i in a) {
 alert(i); // '0', '1', '2'
 alert(a[i]); // 'A', 'B', 'C'
}

or … of循環是ES6引入的新的語法,用for … of循環遍歷集合,用法如下:

var a = ['A', 'B', 'C'];
var s = new Set(['A', 'B', 'C']);
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
for (var x of a) { // 遍歷Array
 alert(x);//'A', 'B', 'C'
}
for (var x of s) { // 遍歷Set
 alert(x);//'A', 'B', 'C'
}
for (var x of m) { // 遍歷Map
 alert(x[0] + '=' + x[1]);//1='x',2='y',3='z'
}

for … in循環由於歷史遺留問題,它遍歷的實際上是對象的屬性名稱。一個Array數組實際上也是一個對象,它的每個元素的索引被視爲一個屬性。
當我們手動給Array對象添加了額外的屬性後,for … in循環將帶來意想不到的意外效果:

var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x in a) {
 alert(x); // '0', '1', '2', 'name'
}

for … in循環將把name包括在內,但Array的length屬性卻不包括在內。

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

var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x of a) {
 alert(x); // 'A', 'B', 'C'
}

以上所述是小編給大家介紹的Js裏的for…in和for…of的用法詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對神馬文庫網站的支持!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章