初學(xué)javaScript的時(shí)候,我們總是容易混淆對于數(shù)組和對象的遍歷方法。js中循環(huán)語句有forEach,for in,for of 三種。網(wǎng)上有很多資料,對于剛開始接觸js的童鞋們來說講的有點(diǎn)過深,不一定能看的明白,所以在這這里我們通俗的解釋一下,希望能幫助到大家。
總結(jié):
1、對于數(shù)組來說,for-of 遍歷的數(shù)組的value值,也就是數(shù)組元素的值。而for-in則遍歷的是數(shù)組的鍵值,也就是數(shù)組的index。foreach也遍歷的是數(shù)組的value值,但與for-in不同的是:在遍歷的過程中不能被終止,必須每一個值遍歷一遍后才能停下來,即在foreach遍歷的過程中,不支持相應(yīng)的break,continue退出循環(huán)和不能使用return語句返回到外層。
for-in:
1、for-in主要用來遍歷對象的屬性,包括對象繼承自原型對象的屬性。常用在遍歷擁有enumerable屬性的對象。
enumerable(可枚舉)形如:{name:sugar,sex:female};
2、但是?。”M量不要用for-in遍歷數(shù)組:原因主要是,for-in主要得到數(shù)組的鍵,但該鍵的類型確是String類型,代碼如下:

結(jié)果為String。所以如果你自我認(rèn)為index是數(shù)字類型,繼而用來做相關(guān)的計(jì)算,則會得到不一樣的結(jié)果。最讓人震驚的是,在某些情況下,這段代碼可能按照隨機(jī)順序遍歷數(shù)組元素。所以for-in主要是用來循環(huán)帶有字符串key的對象的方法。
for-of:作為ES6中新出的循環(huán)方法,比for-in,foreach有很多優(yōu)勢。
1、可以遍歷多種類型的數(shù)據(jù)。是最簡單的遍歷數(shù)組的方法,語法如下:

2、彌補(bǔ)了foreach在循環(huán)過程中不能被中斷的缺點(diǎn)。
3、還可以遍歷字符串,類型化的數(shù)組(TypedArray),ES6新出的Map,Set類型的數(shù)據(jù),同時(shí)利用object.key()可以用來遍歷具有enumerable屬性的數(shù)據(jù)。
希望對大家有幫助哈~歡迎大家指正