iT邦幫忙

0

for與do迴圈加continue差別

  • 分享至 

  • xImage
for (i=0;i<=10;i++)
{
 if (i===3){
   continue;
 }
  console.log(i);
}
//輸出為:0,1,2,4,5,6,7,8,9,10
var i=0;
while(i<=10)
{   
    if(i===3)
    {
     continue;
    }  
   console.log(i);
  i+=1; 
}
//輸出為:0,1,2  

我想用while做出與for迴圈相同的輸出結果,可是卡腦了
但用看的這兩個迴圈似乎差不多,可是while迴圈只能輸出到2就停了

當while迴圈判斷如果i=3,會跳出並不會印出3,而執行i+=1,並印出4,直到i超過11才停。

weiclin iT邦高手 4 級 ‧ 2018-05-19 16:57:20 檢舉
因為 if(i===3) 成立的話, i+=1 就不會執行到了, 所以 i 永遠是 3 無限迴圈
 
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
2
暐翰
iT邦大師 1 級 ‧ 2018-05-19 17:01:07

第二個Script問題在
i加到3的時候
會去呼叫continue
不會執行到下面的i+=1
所以變成"死循環"


可以改成

var i=0;
while(i<=10)
{   
    if(i===3)
    {
        //i為3的時候的邏輯	
    }else{
        //i非3的時候的邏輯	
        console.log(i); 
    } 
    i+=1;  
}
看更多先前的回應...收起先前的回應...
-日日- iT邦新手 3 級 ‧ 2018-05-19 17:55:54 檢舉

明白 我嘗試看看 我只想到if沒馬上想到能用else 謝謝您

weiclin iT邦高手 4 級 ‧ 2018-05-19 18:18:06 檢舉

這樣改 0 就出不來了..

原因暐翰提了,我就不再說明,

不過暐翰建議的語法有點問題唷!
i+=1;
不能放在判斷式if的前面,否則判斷的是下一個值!

如果你想用while做出與for迴圈相同的輸出結果,可以用下列方式:

var i=0;
while(i<=10)
{   
    if(i===3)
    {
     i+=1; 
     continue;
    } 
    else
    {
     console.log(i);
     i+=1; 
    }
}

輸出應該就會是0,1,2,4,5,6,7,8,9,10

暐翰 iT邦大師 1 級 ‧ 2018-05-19 18:19:44 檢舉

starcity1003
weiclin
謝謝,已修正了 :-)

while(i<10)
的話,應該不會出現最後一個10的結果吧?

//i為3的時候的邏輯
如果是continue;
的話,你的語法結構還是會有問題唷!

暐翰 iT邦大師 1 級 ‧ 2018-05-19 18:33:57 檢舉

starcity1003
這邊不使用continue

i+=1;
console.log(i);
順序還是不對...
照你的意思應該寫成:

var i=0;
while(i<=10)
{   
    if(i===3)
    {
    } 
    else
    {
     console.log(i);
    }
   i+=1;
}
暐翰 iT邦大師 1 級 ‧ 2018-05-19 18:52:20 檢舉

log只是紀錄用,為何要忽略?

i+=1;
console.log(i);
順序還是不對...
i+=1;不能放在前面唷!
照你的意思應該寫成:

var i=0;
while(i<=10)
{   
    if(i===3)
    {
    } 
    else
    {
     console.log(i);
    }
   i+=1;
}
暐翰 iT邦大師 1 級 ‧ 2018-05-19 18:58:25 檢舉

明白你的意思了 /images/emoticon/emoticon12.gif

我承認我沒好好看完文章
需要的邏輯
想說小問題把錯誤抓出來就好
(抱歉,檢討中)

照發問者的原意,他應該沒有要3的log紀錄吧…

大家一起討論討論而已,互相幫忙!^^

暐翰 iT邦大師 1 級 ‧ 2018-05-19 19:07:55 檢舉

謝謝你! /images/emoticon/emoticon12.gif

-日日- iT邦新手 3 級 ‧ 2018-05-19 22:01:10 檢舉

十分感謝暐翰weiclin和**starcity1003 **的點醒與討論
我的確是想讓3不在log檔裡。

6

本來只想用討論但他沒辦法上語法標籤……
我說你如果非用while不可的話,為什麼不反向思考?
寫程式的時候,有的時候只要一個「not」就解決很多困擾了。

var i = 0;
while(i <= 10) {
	if(i !== 3) {
        console.log(i);
    }
    i += 1;
}

聰明!
不過,while要加個等於吧…
while(i<=10)
否則會漏掉10唷!

漏打,已補上

-日日- iT邦新手 3 級 ‧ 2018-05-19 21:58:59 檢舉

天阿 反向思考這句話讓我受益良多 感謝Samと可樂快跑!!
也十分感謝starcity1003 !!

1
wwx
iT邦好手 1 級 ‧ 2018-05-20 12:41:51

我要吐槽標題for與do...卻沒有看到do

為了維持卡腦的continue想法,建議可以這樣寫

var i = 0;
do {
    if (i === 3)
        continue;
    console.log(i);
} while (i++ < 10);
//輸出為:0,1,2,4,5,6,7,8,9,10

halawing iT邦新手 2 級 ‧ 2018-05-21 23:52:12 檢舉

同吐槽沒看到 do ~~~~

我要發表回答

立即登入回答