while循環(huán)到底能不能模擬for??jī)蓸O反轉(zhuǎn)你永遠(yuǎn)也猜不到

大家用的最多的循環(huán)語(yǔ)句肯定是for担忧,那能不能用while模擬一下for完成一些循環(huán)芹缔?

如題,用while去模擬for瓶盛,打印數(shù)組的全部元素

let arr = [1, 2, 3];
for(let i = 0; i < arr.length; i++) {
    consoel.log(arr[i]);
}

//仿照上面的循環(huán)最欠,用while寫(xiě)一遍
let j = 0;
while (j < arr.length) {
    console.log(arr[j]);
    j++;
}

上面兩段代碼,用while模仿了一次for循環(huán)惩猫,感覺(jué)還差不多芝硬,雖然在變量定義方面有點(diǎn)小差別,for循環(huán)結(jié)束后轧房,會(huì)釋放掉i的內(nèi)存拌阴,而while沒(méi)有,不過(guò)兩個(gè)循環(huán)的輸出一樣奶镶,可以算模擬成功了迟赃。
但是...現(xiàn)在要改需求了陪拘,同學(xué)們,要求使用continue

let arr = [1, 2, 3, undefined, 5];
for (let i = 0; i < arr.length; i++) {
     if (!arr[i]) continue;
     console.log(arr[i]);
 }
 //輸出1 2 3 5
 console.log('**************');
 let j = -1;
 while (j < arr.length) {
     j++;
     if (!arr[j]) continue;
     console.log(arr[j]);
 }
  //輸出1 2 3 5

上面代碼中while內(nèi)部調(diào)整了一下j的累加位置纤壁,如果還按第一次那樣去輸出左刽,那么while會(huì)陷入死循環(huán),因?yàn)?code>continue在while內(nèi)部執(zhí)行的時(shí)候會(huì)直接跳到下一次循環(huán)酌媒,導(dǎo)致我們的j無(wú)法累加欠痴,而for循環(huán)中遇到continue后是先給增量i加1,然后再判斷跳出條件秒咨,所以上方代碼雖然強(qiáng)行把輸出結(jié)果調(diào)整為一致斋否,都是跳過(guò)undefined,但是內(nèi)部的運(yùn)行機(jī)制已經(jīng)存在差別了拭荤,對(duì)待continue的處理情況不一致茵臭,所以while不能模擬for

繞了一大圈舅世,有點(diǎn)不甘心旦委,能不能有什么方法幫助while執(zhí)行到continue之后的增量累加呢?必然得有啊雏亚,可以使用try/finally缨硝,通過(guò)不管什么情況下finally一定會(huì)執(zhí)行的特點(diǎn),保證執(zhí)行增量計(jì)算罢低。

let j = 0;
while (j < arr.length) {
    try {
        if (!arr[j]) continue;
        console.log(arr[j]);
    } finally {
        j++;
    }
}
//輸出1 2 3 5

這回while應(yīng)該高興了查辩,終于模擬成for了,可喜可賀网持,那么問(wèn)題又來(lái)了宜岛,finally中的代碼是一定會(huì)執(zhí)行的,那么while的增量j一定會(huì)加1功舀,能不能使for里面的增量i不增加萍倡? 當(dāng)然也可以呀!用break就可以辟汰。

let arr = [1, 2, 3, undefined, 5, 6, 7];
let i = 0;
for (; i < arr.length; i++) {
    if (!arr[i]) continue;
    if (arr[i] === 6) {
        break;
    }
}
console.log(i);
//輸出 5
console.log('**************');
let j = 0;
while (j < arr.length) {
    try {
        if (!arr[j]) continue;
        if (arr[j] === 6) {
            break;
        }
    }finally {
        j++;
    }
}
console.log(j);
//輸出 6

whilefor多進(jìn)行了一次增量計(jì)算列敲,所以一直在模仿,從未被超越帖汞,while還是沒(méi)能成為for戴而。
各位道友,還能反轉(zhuǎn)不翩蘸?
本編文章是參考了《JavaScript權(quán)威指南》一書(shū)所意,推薦大家讀的一本好書(shū)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市扁眯,隨后出現(xiàn)的幾起案子壮莹,更是在濱河造成了極大的恐慌,老刑警劉巖姻檀,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件命满,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡绣版,警方通過(guò)查閱死者的電腦和手機(jī)胶台,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)杂抽,“玉大人诈唬,你說(shuō)我怎么就攤上這事∷豸铮” “怎么了铸磅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)杭朱。 經(jīng)常有香客問(wèn)我阅仔,道長(zhǎng),這世上最難降的妖魔是什么弧械? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任八酒,我火速辦了婚禮,結(jié)果婚禮上刃唐,老公的妹妹穿的比我還像新娘羞迷。我一直安慰自己,他們只是感情好画饥,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布衔瓮。 她就那樣靜靜地躺著,像睡著了一般荒澡。 火紅的嫁衣襯著肌膚如雪报辱。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,806評(píng)論 1 290
  • 那天单山,我揣著相機(jī)與錄音,去河邊找鬼幅疼。 笑死米奸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的爽篷。 我是一名探鬼主播悴晰,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了铡溪?” 一聲冷哼從身側(cè)響起漂辐,我...
    開(kāi)封第一講書(shū)人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎棕硫,沒(méi)想到半個(gè)月后髓涯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡哈扮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年纬纪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滑肉。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡包各,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出靶庙,到底是詐尸還是另有隱情问畅,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布六荒,位于F島的核電站护姆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏恬吕。R本人自食惡果不足惜签则,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铐料。 院中可真熱鬧渐裂,春花似錦、人聲如沸钠惩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)篓跛。三九已至膝捞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間愧沟,已是汗流浹背蔬咬。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沐寺,地道東北人林艘。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像混坞,于是被迫代替她去往敵國(guó)和親狐援。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钢坦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

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