我调用一个函数"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
Run Code Online (Sandbox Code Playgroud)
if声明有两个分支.
这两个分支中只有一个包含一个return声明.
如果它命中if(而不是else)那么就没有return语句而且它会返回undefined.
您需要在/ return的if一侧添加一个语句.ifelse