第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我的函數(shù)在遇到返回后執(zhí)行剩余的代碼(在兩個循環(huán)內返回)

為什么我的函數(shù)在遇到返回后執(zhí)行剩余的代碼(在兩個循環(huán)內返回)

慕運維8079593 2021-08-20 18:58:44
我不明白為什么這個函數(shù)會在應該調用 return 語句之后運行剩余的代碼:function func(i) {while (i >= 0) {if (i < 0) {        return;    }        document.write("inside loop, i is  " + i);    document.write("</br>");i--;} //end of while document.write("end of function, i is " + i);document.write("</br>");}func(2);輸出:inside loop, i is 2; inside loop, i is 1; inside loop, i is 0; end of function, i is -1; 我期待:inside loop, i is 2; inside loop, i is 1; inside loop, i is 0; 如果應該在返回之前調用返回,為什么會寫入“函數(shù)結束,i 是 -1”這一行?如果我用 while(true) 替換 while(i >= 0) 函數(shù)會給出預期的輸出(沒有最后一個 document.write)。為什么?如果我將 while 循環(huán)后的代碼替換為:return document.write("end of function, i is " + i);document.write("end 2 of function, i is " + i);不執(zhí)行最后一行代碼(函數(shù)的末尾 2, i is )。為什么代碼在第一次返回后繼續(xù)執(zhí)行而不是在第二次返回之后?如果我從 if 語句中取出 return 函數(shù)在調用 return 時停止:while (i >= 0) {   document.write("inside loop, i is  " + i);  document.write("</br>");  i--;  return; }輸出是:inside loop, i is 2為什么在這種情況下最后一個 document.write ("end of function, i is ") 不執(zhí)行?
查看完整描述

2 回答

?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

您的while情況:


while (i >= 0) {

將永遠不會在同一時間將是真實的return測試為真:


if (i < 0) {    

  return;

}    

由于i在while循環(huán)頂部和i < 0測試之間沒有改變,因此if永遠不會實現(xiàn)。在最后一次迭代,i從0到-1剛剛結束之前遞減while塊,由于一個i的-1失敗的while考驗,沒有進一步的迭代將運行(與if檢查,return不會遇到)。


如果您讓while循環(huán)無限期地繼續(xù),直到if語句執(zhí)行完畢,該函數(shù)確實會返回:


function func(i) {

  while (true) {

    if (i < 0) {

      return;

    }

    document.write("inside loop, i is  " + i);

    document.write("</br>");


    i--;

  } //end of while 

  document.write("end of function, i is " + i);

  document.write("</br>");

}

func(2);

至于


如果在 while 循環(huán)之后我將代碼替換為:


return document.write("end of function, i is " + i);

document.write("end 2 of function, i is " + i);


如果我從 if 語句中取出 return 函數(shù)在調用 return 時停止:


while (i >= 0) { 

...

return;

在這兩種情況下,該return聲明被實際所遇到的,所以函數(shù)終止有預期。(在您的原始代碼中,解釋器永遠不會遇到return,因為if永遠不會實現(xiàn))


查看完整回答
反對 回復 2021-08-20
?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

使用中斷;相反或更好地仍然使用 return false; 像這樣


function func(i) {

while (true) {

if (i < 0) {    

    break;

    }    

    document.write("inside loop, i is  " + i);

    document.write("</br>");


i--;

} //end of while 

document.write("end of function, i is " + i);

document.write("</br>");

}

func(2);


function func(i) {

while (true) {

if (i < 0) {    

    return false;

    }    

    document.write("inside loop, i is  " + i);

    document.write("</br>");


i--;

} //end of while 

document.write("end of function, i is " + i);

document.write("</br>");

}

func(2);

我不知道第二個(返回 false),但第一個應該可以解決問題。我希望它有幫助。


查看完整回答
反對 回復 2021-08-20
  • 2 回答
  • 0 關注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號