1、for循環
1)常規寫法
2) arr.lengh緩存下來:實際上,緩存后比常規寫法效率要低
3)小技巧:邊賦值邊判斷,第二個分號中是判斷的內容,每次循環時會對其進行判斷,當i++大於arr的長度時,arr[i++]=underfined 在JS中0 null underfined '' 都會轉換為false,循環停止。
注意:for循環使用break、continue和return都可以退出
1)break:終止循環,只能用在循環語句中
2)continue:跳出當前循環。繼續下一個循環
3)return 表達式:用於指定函數返回的值,只能用在函數體中。
執行return false;語句會終止函數的執行,返回到函數的調用處,即使后面還有其他的語句也
不再執行。
2、for of:ES6推出的用於迭代字符串、數組、類數組對象、map、set等一切可以迭代的結構。
注意:不能迭代對象
1)字符串與數組
2)類數組對象
3)set結構
4)map結構
3、for in(ES5):主要用於遍歷數組或者對象中的屬性,不推薦直接遍歷數組,因為遍歷的是數組中的索引
4、forEach():用於遍歷數組
forEach(function(){},thisValue)
* function(currentVal,index,arr){ }
- currentVal:當前遍歷的值
- index:代表當前的索引值
- Arr:可選,當前遍歷的對象
* thisValue:參數函數的this值,默認為window
注意:存在的問題就是在遍歷完所有元素之前不能停止,沒有break語句。如果需要強制退出,使用try catch語句,在catch中return
5、map():map()方法返回一個新數組,新數組返回值為原數組元素調用函數處理后的值。(用於對數組的元素進行一些處理)
和forEach()方法一樣,只能用於遍歷數組,不能用於對象
6、filter():返回過濾后的數組,不會改變原數組。(用於數組的過濾)
7、some():檢測數組的元素是否滿足指定條件,返回布爾值。不會改變原數組
8、every():用於檢測數組元素是否都滿足條件,返回布爾值,不會改變原數組
9、reduce():