ES6模块导入是否被吊起?

2023-12-14

我知道在新的 ES6 模块语法中,JavaScript 引擎将不必evaluate了解所有导入/导出的代码,它只会parse它并“知道”要加载什么。

这听起来像是吊装。 ES6模块是否吊装?如果是这样,它们会在运行代码之前全部加载吗?

这段代码可以吗?

import myFunc1 from 'externalModule1';

myFunc2();

if (Math.random()>0.5) {
    import myFunc2 from 'externalModule2';
}

经过更多研究后,我发现:

  • 进口量大幅上涨!根据spec of 模块声明实例化
  • 所有依赖的模块将在运行任何代码之前加载。

这段代码不会有错误,并且可以工作:

localFunc();

import {myFunc1} from 'mymodule';

function localFunc() { // localFunc is hoisted
    myFunc1();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ES6模块导入是否被吊起? 的相关文章

随机推荐