for出皇,for in,forEach哗戈,for of 各種循環(huán)的用法

for循環(huán)

const ary = [10, 20, 30];
for(let i = 0, len = ary.length; i < len; i++) {
    console.log(ary[i]);
}
// 10
// 20
// 30

for...in循環(huán)

此語句以任意順序遍歷一個對象的可枚舉屬性郊艘。

const person = {
    firstName: "Jon",
    age:18
};
for(let info in person) {
    console.log(`person[${info}] = ${person[info]}`);
}
//person[firstName] = Jon
//person[age] = 18

注意:

  • for...in只能遍歷對象的“可枚舉的屬性”

  • for-in遍歷屬性的順序并不確定,因此數(shù)組迭代推薦使用for循環(huán)(或者使用 Array.prototype.forEach() 或 for...of 循環(huán))

Array.prototype.forEach()

在ES5中引入了新的數(shù)組循環(huán)forEach對數(shù)組中的每個元素執(zhí)行一次提供的函數(shù)唯咬。

該方法按升序?yàn)閿?shù)組中含有效值的每一項(xiàng)執(zhí)行一次callback 函數(shù)纱注,那些已刪除(使用delete方法等情況)或者未初始化的項(xiàng)將被跳過(但不包括那些值為 undefined 的項(xiàng))。

function logArrayElements(element, index, array) {
    console.log("a[" + index + "] = " + element);
}

// 注意索引2被跳過了胆胰,因?yàn)樵跀?shù)組的這個位置沒有項(xiàng)
[2, 5, ,9].forEach(logArrayElements);

// a[0] = 2
// a[1] = 5
// a[3] = 9

[2, 5,"" ,9].forEach(logArrayElements);
// a[0] = 2
// a[1] = 5
// a[2] = 
// a[3] = 9

[2, 5, undefined ,9].forEach(logArrayElements);
// a[0] = 2
// a[1] = 5
// a[2] = undefined
// a[3] = 9


let xxx;
// undefined

[2, 5, xxx ,9].forEach(logArrayElements);
// a[0] = 2
// a[1] = 5
// a[2] = undefined
// a[3] = 9

Tips:forEach第二個參數(shù)是可選參數(shù)狞贱,替代回調(diào)函數(shù)中的this值。

for...of語句

let iterable = [10, 20, 30];

for (let value of iterable) {
    value += 1;
    console.log(value);
}
// 11
// 21
// 31

注意:

  • 跟Array.prototype.forEach()相比蜀涨,for...of可以正確響應(yīng)break, continue, return瞎嬉,throw。

  • for...of不僅可迭代數(shù)組厚柳,還支持大多數(shù)類數(shù)組對象氧枣,例如DOM nodelist對象。還有其它可迭代對象(包括Map别垮,Set便监,String,TypedArray碳想,arguments對象等等)

  • for...of不支持普通對象烧董,但如果你想迭代一個對象的屬性毁靶,你還是用for-in循環(huán)吧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市解藻,隨后出現(xiàn)的幾起案子老充,更是在濱河造成了極大的恐慌,老刑警劉巖螟左,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啡浊,死亡現(xiàn)場離奇詭異,居然都是意外死亡胶背,警方通過查閱死者的電腦和手機(jī)巷嚣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钳吟,“玉大人廷粒,你說我怎么就攤上這事『烨遥” “怎么了坝茎?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長暇番。 經(jīng)常有香客問我嗤放,道長,這世上最難降的妖魔是什么壁酬? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任次酌,我火速辦了婚禮,結(jié)果婚禮上舆乔,老公的妹妹穿的比我還像新娘岳服。我一直安慰自己,他們只是感情好希俩,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布吊宋。 她就那樣靜靜地躺著,像睡著了一般颜武。 火紅的嫁衣襯著肌膚如雪贫母。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天盒刚,我揣著相機(jī)與錄音腺劣,去河邊找鬼。 笑死因块,一個胖子當(dāng)著我的面吹牛橘原,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼趾断,長吁一口氣:“原來是場噩夢啊……” “哼拒名!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起芋酌,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤增显,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后脐帝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體同云,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年堵腹,在試婚紗的時候發(fā)現(xiàn)自己被綠了炸站。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡疚顷,死狀恐怖旱易,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情腿堤,我是刑警寧澤阀坏,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站笆檀,受9級特大地震影響忌堂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜误债,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一浸船、第九天 我趴在偏房一處隱蔽的房頂上張望妄迁。 院中可真熱鬧寝蹈,春花似錦、人聲如沸登淘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽黔州。三九已至耍鬓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間流妻,已是汗流浹背牲蜀。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绅这,地道東北人涣达。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親度苔。 傳聞我的和親對象是個殘疾皇子匆篓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容