这听起来像个奇怪的问题:如何从ES6模块中保留执行上下文?
请参阅以下示例: Module1要求浏览器中存在一些功能(比如一些新的东西,而不是每个浏览器都实现当前的功能)。
您想要检查模块,如果所需功能可用,如果没有,您想要停止执行。
使用立即函数调用编写时,您只需调用return
即可执行以下代码。
如何在ES6模块中执行此操作?我是否必须将整个代码包装到if
块中?
答案 0 :(得分:1)
在ES6 / ES2015中没有特殊工具(我知道)可以做到这一点。此外,所有出口必须是顶级的。这也意味着如果模块具有给定的导出,则始终具有该导出。当然,该导出的值可以改变,但导出“接口”必须始终相同。
如果您不想在不符合条件的情况下导出某些值,那么您将无法这样做。但是,在这种情况下,您始终可以使用null
或undefined
这些值。如果导出不是问题,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;
...
}