亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

條件語句中的空返回語句如何起作用?

條件語句中的空返回語句如何起作用?

慕妹3146593 2021-11-18 15:49:42
從 MDN Docs 學習 JS 遇到了“函數部分”中的代碼。無法理解return;以下代碼完成了什么function foo(i) {  if (i < 0)    return; // what does this do?   console.log('begin: ' + i);  foo(i - 1);  console.log('end: ' + i);}foo(3);Output'begin: 3''begin: 2''begin: 1''begin: 0''end: 0''end: 1' // why are these printing'end: 2' // this one'end: 3' // this one我理解了前 5 行輸出,但無法理解為什么end: 0,1,2,3會出現?請幫忙 !
查看完整描述

3 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

return終止當前函數,并將控制流返回給調用者。


當foo(3);被調用時,函數用i參數 3初始化。它使if語句失敗,打印begin: 3,然后調用foo(3 - 1);。此時,當前函數(i參數為 3的函數)將暫停,直到foo(3 - 1);調用完成。


foo(2);打印begin: 2,然后在調用時暫停foo(1)。


foo(1)打印begin: 1,然后在調用時暫停foo(0)。


foo(0)打印begin: 0,并返回:它終止,并將控制流返回給它的調用者,即 的函數調用foo(1)。


foo(1)恢復,并繼續執行,打印end: 1。這是函數塊的結尾,因此foo(1)函數調用結束,將控制流返回到foo(2)函數調用。


foo(2)恢復,打印end: 2,然后終止,產生控制流回到foo(3)。然后foo(3)打印end: 3,并終止。


return僅終止當前功能。終止所有調用函數(直到catch遇到 a)的唯一方法是拋出錯誤:


function foo(i) {

  if (i < 0)

    throw new Error();

  console.log('begin: ' + i);

  foo(i - 1);

  console.log('end: ' + i);

}

foo(3);


查看完整回答
反對 回復 2021-11-18
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

這應該可以幫助您跟蹤代碼:


foo(3)

|-- "begin 3"

|-- foo(2)

|   |-- "begin 2"

|   |-- foo(1)

|   |   |-- "begin 1"

|   |   |-- foo(0)

|   |   |   |-- "begin 0"

|   |   |   |-- foo(-1) // returns nothing

|   |   |   |-- "end 0"

|   |   |-- "end 1"

|   |-- "end 2"

|-- "end 3"


查看完整回答
反對 回復 2021-11-18
?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

這是一個遞歸函數。當基本條件填充時,它執行其他語句。在你的情況下它是 console.log('end: ' + i);


查看完整回答
反對 回復 2021-11-18
  • 3 回答
  • 0 關注
  • 191 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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