【问题标题】:Return boolean value through multiple functions通过多个函数返回布尔值
【发布时间】:2011-03-14 21:59:03
【问题描述】:

我有一些 Javascript 代码需要以返回 true 或 false 值结束。但是,当计算真假值时,原始值已经通过多个函数,如下所示:

var txt = 'foo'    
function one(txt) {
if(txt == 'foo') { two(txt); }
}
function two(txt) {
if(txt == 'foo') { three(txt); }
}
function three(txt) {
if(txt == 'foo') { return true; }
else { return false; }
}

显然这个例子没有什么意义,但它传达了一般意义。我需要做的是从函数three() 中返回true(或false)值,一直返回到函数one(),然后让函数one() 将该值返回给任何调用它的值。我假设我必须通过函数two() 回到一个函数,有没有办法用变量来做到这一点?只是一个想法。非常感谢您的帮助!

【问题讨论】:

  • 也许我没有收到问题,但只写return two(txt);return three(txt); 行不通?

标签: javascript boolean return


【解决方案1】:

您可能想尝试以下方法(如果我正确理解了您的问题):

function one(txt) {
   if(txt == 'foo') return two(txt);
   else return false;
}

function two(txt) {
   if(txt == 'foo') return three(txt);
   else return false;
}

function three(txt) {
   if(txt == 'foo') return true;
   else return false;
}

【讨论】:

  • 您可以强制转换为布尔值 - return two( new Boolean(txt) );return two( !!txt ); - 而无需 || false
  • @Fabio:我删除了|| false 部分。如果所有函数都返回 true 或 false,则不需要它。
【解决方案2】:

将调用更改为three() 和two() 以返回three() 并返回two()。

【讨论】:

  • 如果您将 foo 以外的其他内容传递给 one() 函数,则仍会返回 undefined。
【解决方案3】:

如果你喜欢三元运算符:

function one(txt) {
    return (txt == 'foo') ? two(txt) : false;
}
function two(txt) {
    return (txt == 'foo') ? three(txt) : false;
}
function three(txt) {
    return (txt == 'foo');
}

【讨论】:

    【解决方案4】:

    你可以像上面所说的那样做,或者你可以在函数之外声明一个变量,这样它是全局的,只是引用它。这不是很好的做法,但它会起作用。

    【讨论】:

      【解决方案5】:

      试试:

      var txt = 'foo'    
      function one(txt) {
      if(txt == 'foo') return two(txt); 
       else return false;
      }
      function two(txt) {
      if(txt == 'foo')  return three(txt); 
       else return false;
      }
      function three(txt) {
      if(txt == 'foo')  return true; 
      else return false; 
      }
      

      【讨论】:

      • onetwo 也需要else case,否则当条件为假时它们不会返回任何内容。
      【解决方案6】:
      var txt = 'foo';
      
      function one(txt) {
         return two(txt); 
      }
      
      function two(txt) {
          return three(txt); 
      }
      
      function three(txt) {
          return txt == 'foo'
      }
      

      【讨论】:

      • 再多说几句为什么你建议这个代码会很好。
      • 我认为这是最好的,因为它将布尔值视为任何其他类型。它也是最简单的,不需要 if 或 else。布尔值是使用函数 3 中的测试创建的,并向上传递堆栈。
      • @BarryBurns 是正确的。这是一个函数组合的例子。 onetxt ===(twothreetxt。这比布尔提前退出示例更可取,因为您可以避免使用条件来返回布尔值(这是多余的,因为布尔条件的计算结果为真或假,并且很容易返回矛盾,这很容易混淆),而且允许通过将更多函数组合在一起来创建复杂的条件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 2011-07-22
      • 1970-01-01
      相关资源
      最近更新 更多