簡體   English   中英

調用自身的函數不會返回true

[英]Function that calls itself doesn't return true

我調用一個函數“returnsTrue”,當參數“redo”設置為true時,它調用自身。 然后我回想起相同的函數“returnsTrue”,參數“redo”設置為false,我想返回true。 但實際上我只能得到“未定義”。

我真的不明白這里發生了什么:

function returnsTrue(redo){
    if(redo){
    console.log('Restart Function');
    returnsTrue(false);
  }else{
    console.log('It returns true');
    return true;
  }
}

if(returnsTrue(true)){
    console.log('1');
}else{
    console.log('2');
}

var isTrue = returnsTrue(true);
console.log(isTrue);
// is undefined

檢查https://jsfiddle.net/8820r2ug/

if語句有兩個分支。

這兩個分支中只有一個包含return語句。

如果它命中if (而不是else ),那么就沒有return語句,它返回undefined

您需要在if / elseif側添加return語句。

所以發生的事情是賦值調用沒有返回一個值,它是函數中返回true的調用,因此你的賦值最終未定義,嘗試在函數內返回函數調用,如下所示:

function returnsTrue(redo){
    if(redo){
    console.log('Restart Function');
    return returnsTrue(false);
  }else{
    console.log('It returns true');
    return true;
  }
}

if(returnsTrue(true)){
    console.log('1');
}else{
    console.log('2');
}

var isTrue = returnsTrue(true);
console.log(isTrue);
// is undefined

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM