for each...in和for...in


for...in

官方解釋:for...in語句以任意順序遍歷一個對象的可枚舉屬性。對於每個不同的屬性,語句都會被執行。

 
        
語法:for (變量 in 對象)
{
    在此執行代碼(每次循環一次,就會把這個對象的屬性賦值給這個變量,然后就可以來查看有哪些屬性,或者更改屬性等)
}
1.迭代中增加屬性的不確定性(最好不要添加):在迭代進行時被添加到對象的屬性,可能在之后的迭代被訪問,也可能被忽略。通常,在迭代過程中最好不要在對象上進行添加、修改或者刪除屬性的操作,
除非是對當前正在被訪問的屬性。這里並不保證是否一個被添加的屬性在迭代過程中會被訪問到,不保證一個修改后的屬性(除非是正在被訪問的)會在修改前或者修改后被訪問,
不保證一個被刪除的屬性將會在它被刪除之前被訪問。
2.迭代中刪除屬性:如果之前沒有訪問到這個屬性,但是又被刪除了,就不會訪問到
3.迭代中修改屬性:如果一個屬性在一次迭代中被修改,在稍后被訪問,其在循環中的值是其在稍后時間的值。
4.最好不要用for...in去迭代數組(這個索引按照環境來的):
數組索引只是具有整數名稱的枚舉屬性,並且與通用對象屬性相同。不能保證for ... in將以任何特定的順序返回索引。for ... in循環語句將返回所有可枚舉屬性,包括非整數類型的名稱和繼承的那些。

                                                                                                      因為迭代的順序是依賴於執行環境的,所以數組遍歷不一定按次序訪問元素。因此當迭代訪問順序很重要的數組時,最好用整數索引去進

                                                                                                       行for循環(或者用 Array.prototype.forEach() 或 for...of 環)。

  5.僅迭代自身的屬性!

問題:

 

問題答案是這個嗎?

 

 


 

  for each ...in

官方解釋:使用一個變量迭代一個對象的所有屬性值,對於每一個屬性值,有一個指定的語句塊被執行

語法:

for each (variable in object) { statement }

區別:這個跟for。。。in不同的是,這個遍歷的是每個屬性的屬性值,也同樣最好不要遍歷數組

 


 

 

官方解釋:for...of語句可迭代對象(包括 ArrayMapSetStringTypedArrayarguments 對象等等)上創建一個迭代循環,調用自定義迭代鈎子,並為每個不同屬性的值執行語句

for...offor...in的區別

無論是for...in還是for...of語句都是迭代一些東西。它們之間的主要區別在於它們的迭代方式。

for...in 語句以原始插入順序迭代對象的可枚舉屬性

for...of 語句遍歷可迭代對象定義要迭代的數據。

 

這個的是ECMAScript 6出來的,功能還有迭代生成器等

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM