背景
寫了點(diǎn)前端測(cè)試程序,用到j(luò)avascript。
問(wèn)題描述
定義了一個(gè)都是json對(duì)象的數(shù)據(jù),做遍歷的時(shí)候使用了for..in,希望拿到每個(gè)json對(duì)象,然后取到j(luò)son對(duì)象中的值做一些處理。該開始代碼是這樣寫的:
window.layoutConfig = { "api": "layout/config", "param":"" }; window.layoutData = { "api": "layout/data", "param":"" }; var interfaceArray = [ layoutConfig, layoutData ]; function TestAllInterface() { var result; for (var jsonObj in interfaceArray) { alert(jsonObj.api + jsonObj.param); ... Do something } }
發(fā)現(xiàn)alert中打出的值是NAN,怎么想多沒(méi)明白,怎么會(huì)取不到j(luò)son對(duì)象中的值呢?
問(wèn)題解決
后面就看了下廖雪峰的官方網(wǎng)站中iterable的講解,原來(lái)
for ... in循環(huán)由于歷史遺留問(wèn)題,它遍歷的實(shí)際上是對(duì)象的屬性名稱,一個(gè)Array數(shù)組實(shí)際上也是一個(gè)對(duì)象,它的每個(gè)元素的索引被視為一個(gè)屬性,而我只是想得到對(duì)象本身,for...in不能滿足需求,必須使用for...of,這個(gè)是可以取到對(duì)象本身。