ES6模块,停止执行代码

时间:2016-05-24 22:24:43

标签: javascript ecmascript-6

这听起来像个奇怪的问题:如何从ES6模块中保留执行上下文?

请参阅以下示例: Module1要求浏览器中存在一些功能(比如一些新的东西,而不是每个浏览器都实现当前的功能)。

您想要检查模块,如果所需功能可用,如果没有,您想要停止执行。

使用立即函数调用编写时,您只需调用return即可执行以下代码。

如何在ES6模块中执行此操作?我是否必须将整个代码包装到if块中?

2 个答案:

答案 0 :(得分:1)

在ES6 / ES2015中没有特殊工具(我知道)可以做到这一点。此外,所有出口必须是顶级的。这也意味着如果模块具有给定的导出,则始终具有该导出。当然,该导出的值可以改变,但导出“接口”必须始终相同。

如果您不想在不符合条件的情况下导出某些值,那么您将无法这样做。但是,在这种情况下,您始终可以使用nullundefined这些值。如果导出不是问题,ES5中有一些工具,在此之前您可以使用。

IIFE(如你所知):

(function() {
  ...
  if (someCondition) {
    return;
  }
  // code that won't run
})();

单次迭代for循环(不知道你为什么要使用它,但你可以):

for (var i = 0; i < 1; i++) {
  ...
  if (someCondition) {
    break;
  }
  // code that won't run
}

一个很好的老式if陈述:

...
if (!someCondition) {
  // code that won't run
}

答案 1 :(得分:0)

如果从ES6模块导出可执行代码,通常会将其作为函数执行:

export function myFunction() {
    ...
}

---

import { myFunction } from './module';
myFunction();

此功能与您在调用模块中直接定义的任何其他功能一样。您可以像对待调用者一样return

export function myFunction() {
    if(...) return;

    ...
}