我调用了一个函数"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发布于 2017-02-28 17:09:31
if语句有两个分支。
这两个分支中只有一个包含return语句。
如果命中if (而不是else),则没有return语句,并返回undefined。
您需要向if/else的if端添加一条return语句。
发布于 2017-02-28 17:12:51
所以发生的情况是赋值调用没有返回值,而是函数内部的调用返回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 undefinedhttps://stackoverflow.com/questions/42504413
复制相似问题