初學(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不同的是:在遍歷的過程中不能被終止,必須每一個(gè)值遍歷一遍后才能停下來砂豌,即在foreach遍歷的過程中厢岂,不支持相應(yīng)的break,continue退出循環(huán)和不能使用return語句返回到外層阳距。
for-in:
1塔粒、for-in主要用來遍歷對象的屬性,包括對象繼承自原型對象的屬性筐摘。常用在遍歷擁有enumerable屬性的對象卒茬。
enumerable(可枚舉)形如:{name:sugar,sex:female}咖熟;
2圃酵、但是!馍管!盡量不要用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ù)喉恋。
希望對大家有幫助哈~歡迎大家指正