![](/img/trans.png)
[英]Run a function that calls itself every 50 ms and return value when a condition is 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
if
語句有兩個分支。
這兩個分支中只有一個包含return
語句。
如果它命中if
(而不是else
),那么就沒有return
語句,它返回undefined
。
您需要在if
/ else
的if
側添加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.