語法:javascript for(keys in obj){}
適用:遍歷對象
說明:
1.keys表示obj對象的每個鍵值對的鍵(鍵名)
,全部循環中,須要使用obj[keys]來取到每個值。
2.for-in 循環,遍歷時不只能讀取對象自身上面的成員屬性,也能延續原型鏈遍歷出對象的原型屬性
3.使用hasOwnProperty判斷一個屬性是否是對象自身上的屬性。obj.hasOwnProperty(keys)==true 表示這個屬性是對象的成員屬性,而不是原型屬性javascript
語法:javascript for(keys of xxx){}
適用:數組、Set和Map結構、某些相似數組的對象(好比arguments對象、DOM NodeList 對象)、Generator 對象,以及字符串
說明:ES6 借鑑 C++、Java、C# 和 Python 語言,引入了for...of循環,做爲遍歷全部數據結構的統一的方法。
一個數據結構只要部署了Symbol.iterator屬性,就被視爲具備iterator接口,就能夠用for...of循環遍歷它的成員。
也就是說,for...of循環內部調用的是數據結構的Symbol.iterator方法。
其餘:
for (let [key,value] of Object.entries(obj))
for (let key of Object.keys(obj))
for (let key of Object.values(obj))java
1.Object.keys()
返回一個數組
,成員是參數對象自身的(不含繼承的)全部可遍歷( enumerable )屬性的鍵名
。es6
2.Object.values()
返回一個數組
,成員是參數對象自身的(不含繼承的)全部可遍歷( enumerable )屬性的鍵值
。數組
3.Object.entries()
返回一個數組
,成員是參數對象自身的(不含繼承的)全部可遍歷( enumerable )屬性的鍵值對數組
。數據結構
語法:javascript [].forEach(callbackfn[, thisArg])
適用: 遍歷數組,不改變原數組
說明:對數組裏存在的每一個元素調用一次 callbackfn。callbackfn 只被實際存在的數組元素
調用;它不會被缺乏的數組元素調用。
若是提供了一個 thisArg 參數,它會被看成 this 值傳給每一個 callbackfn 調用。若是沒提供它,用 undefined 替代。函數
callbackfn參數,分別爲值、下標、數組自己this
[].forEach(function(value, index, array) { // ... });
對比jQuery中的$.each方法:es5
$.each([], function(index, value, array) { // ... });
缺點:設計
語法: javascript [].map(callbackfn[, thisArg]);
說明:map方法能夠返回一個處理過的新數組
,不改變原數組code
callbackfn參數,分別爲值、下標、數組自己
[].map(function(value, index, array) { // ... return ..... });
①數組的鍵名是數字,可是for...in循環是以字符串做爲鍵名「0」、「1」、「2」等等。
②不只遍歷數字鍵名,還會遍歷手動添加的其餘鍵,甚至包括原型鏈上的鍵。
③某些狀況下,會以任意順序遍歷鍵名,主要是爲遍歷對象而設計的,不適用於遍歷數組。
①有着同for...in同樣的簡潔語法,可是沒有for...in那些缺點。
②不一樣於forEach方法,它能夠與break、continue和return配合使用。
③提供了遍歷全部數據結構的統一操做接口。
一、break:跳出本層循環,繼續執行循環結構後面的語句。若是循環有多層,則break只能跳出一層。
二、continue:跳過本次循環剩餘的代碼,跳轉到表達式處進行下一次的循環判斷,繼續執行下一次循環。
①對與for循環,continue以後執行的語句,是循環變量更新語句i++;
②對於while、do-while循環,continue以後執行的語句,是循環條件判斷;
所以,使用這兩個循環時,必須將continue放到i++以後使用,不然,continue將跳過i++進入死循環
三、return:在程序(函數)中遇到return語句,那麼代碼就退出該函數的執行,返回到函數的調用處;若是是主程序(main()),那麼結束整個程序的運行。
四、exit: 其餘語言中使用,如C、C++等。調用exit()函數將會結束當前進程,同時刪除子進程所佔用的內存空間,把返回信息傳給父進程。 當exit()中的參數爲0時,表示正常退出,其餘返回值表示非正常退出,執行exit()函數意味着進程結束; 而return僅表示調用堆棧的返回,其做用是返回函數值,而且退出當前執行的函數體,返回到函數的調用處, 在main()函數中, return n和exit(n)是等價的。