这听起来像是一个奇怪的问题:如何从ES6模块中离开执行上下文?
请参阅下面的示例: Module1需要浏览器中的一些特性才能出现(比如说,不是每个浏览器都实现了当前的一些新特性)。
您希望在模块中进行检查,如果需要的功能可用,如果没有,您希望停止执行。
在使用直接函数调用编写该函数时,您只需调用return,以下代码就永远不会执行。
如何在ES6模块中做到这一点?我必须将整个代码包装到一个if块中吗?
发布于 2016-05-24 22:30:44
如果从ES6模块导出可执行代码,通常是作为一个函数:
export function myFunction() {
...
}
---
import { myFunction } from './module';
myFunction();此函数的工作方式与直接在调用模块中定义的任何其他函数一样。您可以简单地将return发送给调用方,否则:
export function myFunction() {
if(...) return;
...
}发布于 2016-05-24 22:38:18
在ES6/ES6 2015中没有特殊的工具(据我所知)可以做到这一点。此外,所有出口必须是顶级的.这也意味着,如果一个模块曾经有一个给定的导出,它将总是拥有该导出。当然,出口的价值可能会发生变化,但导出“接口”必须始终相同。
如果您不想导出某些值,如果某个条件没有满足,那么您就无法这样做。但是,在这种情况下,您始终可以将这些值设置为null或undefined。如果导出没有问题,那么ES5提供了一些工具,在此之前,您可以使用。
生活(如你所知):
(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
}https://stackoverflow.com/questions/37424893
复制相似问题