调用自身的函数不会返回true

时间:2017-02-28 09:08:26

标签: javascript

我调用一个函数“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/

2 个答案:

答案 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