第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

元素在“for”中的順序(…)在…中)“環(huán)路

元素在“for”中的順序(…)在…中)“環(huán)路

繁星點點滴滴 2019-06-03 13:40:10
元素在“for”中的順序(…)在…中)“環(huán)路Javascript循環(huán)中的“for…in”循環(huán)是否按照聲明的順序通過哈希表/元素?是否有一個不按順序執(zhí)行的瀏覽器?我希望使用的對象將被聲明。一次永遠(yuǎn)不會被修改。假設(shè)我有:var myObject = { A: "Hello", B: "World" };我進一步將它們用于:for (var item in myObject) alert(item + " : " + myObject[item]);我能期待‘A:’你好‘總是出現(xiàn)在’B:‘世界’之前,在大多數(shù)體面的瀏覽器?
查看完整描述

4 回答

?
翻翻過去那場雪

TA貢獻2065條經(jīng)驗 獲得超14個贊

引用John Resig的話:

當(dāng)前,所有主要瀏覽器都按照定義對象的順序遍歷對象的屬性。Chrome也能做到這一點,除了幾個案例。[.]ECMAScript規(guī)范未顯式地保留此行為。在ECMA-262,第12.6.4節(jié):

列舉這些特性的機制.。是依賴于實現(xiàn)的。

然而,規(guī)范與實現(xiàn)非常不同。ECMAScript的所有現(xiàn)代實現(xiàn)都按照定義對象屬性的順序迭代對象屬性。因此,Chrome團隊認(rèn)為這是一個錯誤,并將修復(fù)它。

所有瀏覽器都遵守定義順序。除了鉻和歌劇,它適用于每個非數(shù)字的財產(chǎn)名稱。在這兩個瀏覽器中,屬性是按順序在第一個非數(shù)值屬性之前提取的(這與它們?nèi)绾螌崿F(xiàn)數(shù)組有關(guān))。訂單是一樣的Object.keys也是。

這個例子應(yīng)該說明發(fā)生了什么:

var obj = {
  "first":"first",
  "2":"2",
  "34":"34",
  "1":"1",
  "second":"second"};for (var i in obj) { console.log(i); };// Order listed:// "1"// "2"// "34"// "first"// "second"

這方面的技術(shù)細(xì)節(jié)不如在任何時候都可能發(fā)生變化這一事實重要。不要指望事情繼續(xù)這樣下去。

簡言之:如果訂單對您很重要,請使用數(shù)組。


查看完整回答
反對 回復(fù) 2019-06-03
?
largeQ

TA貢獻2039條經(jīng)驗 獲得超8個贊

ECMAScript語言規(guī)范,第12.6.4條(關(guān)于for .. in(循環(huán)):

枚舉屬性的機制依賴于實現(xiàn)。枚舉的順序由對象定義。

第4.3.3節(jié)(“物體”的定義):

它是一個無序的屬性集合,每個屬性都包含一個原始值、對象或函數(shù)。存儲在對象屬性中的函數(shù)稱為方法。

我猜這意味著您不能依賴在JavaScript實現(xiàn)中以一致順序枚舉的屬性。(依賴于特定于實現(xiàn)的語言細(xì)節(jié)將是糟糕的風(fēng)格。)

如果您想要定義您的訂單,您將需要實現(xiàn)一些定義它的東西,比如在使用它訪問對象之前對其進行排序的一個鍵數(shù)組。


查看完整回答
反對 回復(fù) 2019-06-03
  • 4 回答
  • 0 關(guān)注
  • 347 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號