这将是一个 SyntaxError。根据这部分规范:
Module :
ModuleBody
ModuleBody :
ModuleItemList
ModuleItemList :
ModuleItem
ModuleItemList ModuleItem
ModuleItem :
ImportDeclaration
ExportDeclaration
StatementListItem
这意味着module只能包含ImportDeclaration
's、ExportDeclaration
's 或StatementListItem
's。根据这个 StatementListItem
不能包含ImportDeclaration
也不能ExportDeclaration
。
import myFunc1 from 'externalModule1';
是一个导入声明,而:
if (Math.random()>0.5) {
import myFunc2 from 'externalModule2';
}
是一个声明。所以你的代码会导致语法错误。
“它们会在运行代码之前全部加载吗?”怎么样?这部分规范包含下一句:
注意:在实例化一个module之前,它请求的所有module都必须可用。
嗯是的。它们都将在运行代码之前加载。