我调用一个函数“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
答案 0 :(得分:6)
if
语句有两个分支。
这两个分支中只有一个包含return
语句。
如果它到达if
(而不是else
),则没有return
语句,它会返回undefined
。
您需要向return
/ if
的{{1}}方添加if
语句。
答案 1 :(得分:3)
所以发生的事情是赋值调用没有返回一个值,它是函数中的返回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