JavaScript 模块 - 动态导入和副作用

JavaScript modules - dynamic imports and side effects

任何人都可以准确地告诉我以下内容的含义,来自 MDN docsimport()(强调我的):

The following are some reasons why you might need to use dynamic import: ... When the module being imported has side effects, and you do not want those side effects unless some condition is true.

我看不出动态导入对副作用有何影响。引用表明动态导入以某种方式减轻或可以避免副作用,这(据我所知)是不正确的。是的,他们的意思是我们可以有条件地导入,但导入仍然意味着副作用。

也就是说,如果我这样做:

//module.js
let foo = 'bar';
alert('Unwanted side effect!');
export {foo};

//...

//mainscript.js
import('./module.js').then(obj => { });

...我仍然收到警报。

我是不是误解了上面的内容?

我也可能误解了,但我的看法是你可以有条件地导入东西:

//mainscript.js
if(somethingIsTrue){
    import('./module.js').then(obj => { });
}

所以如果模块中有副作用,你只会在实际使用模块的情况下得到它们。在静态情况下,模块总是被导入,你总是会产生副作用。