首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用自身的函数不返回true

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

Stack Overflow用户
提问于 2017-02-28 17:08:26
回答 2查看 78关注 0票数 3

我调用了一个函数"returnsTrue“,该函数在参数"redo”设置为true时调用自身。然后我调用相同的函数"returnsTrue“,参数"redo”设置为false,我想返回true。但事实上,我只得到了“未定义”的结果。

我真的不明白这是怎么回事:

代码语言:javascript
复制
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/

EN

回答 2

Stack Overflow用户

发布于 2017-02-28 17:09:31

if语句有两个分支。

这两个分支中只有一个包含return语句。

如果命中if (而不是else),则没有return语句,并返回undefined

您需要向if/elseif端添加一条return语句。

票数 6
EN

Stack Overflow用户

发布于 2017-02-28 17:12:51

所以发生的情况是赋值调用没有返回值,而是函数内部的调用返回true,所以你的赋值以未定义结束,尝试像这样返回函数调用:

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42504413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档