和其他的編程語(yǔ)言一樣裕循,for循環(huán)是一個(gè)非常重要的因素胃惜,再編程之中。
# for(var x=0; x<10; x++) { console.log(x);}
這個(gè)是最原始的for循環(huán),和其他的編程語(yǔ)言一樣 會(huì)在控制臺(tái)上依次輸出 0-9
然后做一些進(jìn)階版 =涡尘。=
# arr.forEach((x, index) => { console.log(x, index)})
forEach是對(duì)數(shù)組的遍歷忍弛,其實(shí)和原始的for循環(huán)是類似的响迂。 ?具體是和? for(var x=0; x<arr.length; x++) {console.log(arr[x], x)}? 是一樣的,其實(shí)理解這個(gè)循環(huán)是一個(gè)很重要的環(huán)節(jié)细疚,因?yàn)楹竺娴钠渌姹咀龅降?也是實(shí)現(xiàn)這句代碼的功能蔗彤。
--->注意一下的是,object 事沒(méi)有forEach()的
#for (x in items) { }
這是另外的一個(gè)進(jìn)階版
但是這個(gè)用起來(lái)就是有一點(diǎn)奇妙了疯兼,因?yàn)檫@個(gè)對(duì)items自身的屬性是有區(qū)別的然遏;
1) 當(dāng)items 為object時(shí),這是一個(gè)很奇妙的輸出
即 ?for(x in items) { console.log(x) } 此時(shí)會(huì)依次輸出 鍵 ?吧彪,我們會(huì)發(fā)現(xiàn)此時(shí)輸出的是數(shù)組的 鍵 待侵, 如果console.log(items[x])此時(shí)才會(huì)按想法輸出 items的值
2)當(dāng)items 為arr時(shí),就會(huì)出現(xiàn)我們期待的結(jié)果姨裸, ?結(jié)果還是和我想的不一樣
for(x in items) {console.log(x)} 此時(shí)會(huì) 輸出秧倾, 0,1,2..,這個(gè)才是數(shù)組的index傀缩,items[x] 會(huì)輸出 數(shù)組的值
差一點(diǎn)就寫錯(cuò)了那先。。還好試了一下赡艰。售淡。。
在es6 中為了改善上面的循環(huán)又引進(jìn)了一個(gè)新的慷垮。揖闸。
# for (x of items) {}
這個(gè)和上面的foreach類似,只是一個(gè)專門為了數(shù)組存在的方式料身,因?yàn)槿绻鹖tems 為obj 就會(huì)報(bào)錯(cuò)汤纸。當(dāng)items = [x1, x2, x3, x4, x5] ; for(x in items) { console.log(x)} 就會(huì)輸出 我們想看到的 x1 x2 x3 x4 x5..終于如愿以償。惯驼。
經(jīng)過(guò)以上測(cè)測(cè)試蹲嚣,for-in 和 for-of 基本可以完成大部分的功能,如果你是一個(gè)php用戶 我覺(jué)得 forEach也是一個(gè)不錯(cuò)的方法祟牲,到是 原始的for循環(huán) 似乎有一點(diǎn)泯然眾人矣~