【问题标题】:Let a function "return" the super function?让函数“返回”超级函数?
【发布时间】:2010-10-13 13:04:51
【问题描述】:

给出以下代码:

function two() {
    return "success";
}

function one() {
    two();
    return "fail";
}

如果你通过调用函数 one() 来测试代码,你总是会得到“失败”。

问题是,如何仅通过调用函数二()在函数一()中返回“成功”?

这可能吗?

问候

【问题讨论】:

  • @Paniyar 如果他不明白,他就不明白。仅仅因为它对您来说很简单并不意味着它普遍简单。

标签: javascript function return super


【解决方案1】:

您不能使函数从在 Javascript(或许多其他语言,afaik)中调用它的函数返回。 您需要 one() 中的逻辑来做到这一点。例如:

 function one() {
     return two() || "fail";
 }

【讨论】:

  • 完全错误,“成功” || "fail" 会失败,也不是布尔值
  • 没有错。根据 JavaScript 的规则,由 Web Ancients of the Web 编写,一个 or 运算符 (||) 将返回第一个参数,如果它不计算为“假”值(例如 false、undefined、null、0、 ""),否则它将评估并返回它的第二个参数。
  • @smirkingman 实际上,你错了。字符串在 JS 中计算为真正的布尔值。将"success" || "fail" 打入任何JS 控制台,它将返回"success"。在抨击某人的回应之前,先了解自己在说什么。
  • 另外,+1 给 andrewmu 的创意回应!
  • 并在您使用时将我的评分恢复为 0!
【解决方案2】:
function one() {
   return two();
}

【讨论】:

    【解决方案3】:

    如果您的 函数一 预期可能的非本地返回以及像这样使用异常的 函数二,您可以使用 try-catch 块来做到这一点:

    function two() {
      throw {isReturn : true, returnValue : "success"}
    }
    
    
    function one () {
      try {
        two()
      } catch(e) {
        if(e.isReturn) return e.returnValue;
      }
      return "fail";
     }
    

    ,我相信。

    【讨论】:

      【解决方案4】:
      function one() {    
          return two();
      }
      

      【讨论】:

        猜你喜欢
        • 2010-10-01
        • 2016-10-21
        • 1970-01-01
        • 2014-07-30
        • 1970-01-01
        • 2018-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多