【问题标题】:How can I use return in javascript如何在javascript中使用return
【发布时间】:2010-12-07 16:59:54
【问题描述】:

如何在javascript中使用return

function hello1() {

    function hello2() {

        if (condition) {
            return; // How can I exit from hello1 function not hello2 ?
        }

    }

}

【问题讨论】:

  • 你的意思是退出 hello2 而不是 hello1
  • 我想这取决于你如何调用 hello2,直到你从 hello1 返回一个对象,才能执行 hello2。我认为您将不得不发布一个更准确的示例来说明您要完成的工作,而不是一个伪问题。

标签: javascript function return


【解决方案1】:

你不能。这不是return 的工作方式。它只从当前函数中退出。

如果能够从调用堆栈更上层的函数返回将破坏函数提供的encapsulation(即,它不需要知道从哪里调用它,应该由调用者决定如果函数失败怎么办)。函数的部分要点是调用者不需要知道函数是如何实现的。

你可能想要的是这样的:

function hello1() {
    function hello2() {
        if (condition) {
            return false;
        }
        return true;
    }

    if (!hello2()) {
        return;
    }
}

【讨论】:

    【解决方案2】:

    您不应该使用内部函数来控制程序流程。拥有内部函数的能力促进了范围上下文和可访问性。

    如果您的外部函数依赖于其内部函数的某些逻辑,只需使用其返回值进行相应的处理。

    【讨论】:

      【解决方案3】:

      像这样跳上堆栈可能是个坏主意。你可以例外。我们在工作中像这样控制执行流程,因为对于一些设计不佳的代码,这是一种直接的解决方法。

      【讨论】:

      • 即使有异常,也取决于调用堆栈中较高的函数之一来处理它。这将要求对hello1 的每个函数调用都包装在try...catch 块中......有点混乱;-)
      猜你喜欢
      • 2019-08-18
      • 2013-06-09
      • 2013-03-02
      • 2010-12-21
      • 2022-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多