导入的文件是否继承其导入器的范围?

Does an imported file inherit the scope of its importer?

当在 JavaScript 中导入文件时,该操作是否会导致导入文件中的变量范围变为导入文件的范围,从而无需在第二个导入文件中添加导入声明,因为它们在进口商文件中声明?

例如,如果先加载这个:

/* Config.js */
import { ImportantVar, OkayVar, LastVar } from 'first/file/path.js';
import DataObject from 'second/file/path.js';

然后加载:

/* Second File */
export const DataObject = function( param1, param2 ) {
   return new ImportantVar( param1, param2 );
}

是否应该将此行添加到第二个文件的顶部?

import ImportantVar from 'first/file/path.js';

我不在乎第二个文件是否损坏应该是 运行 独立的,即不是从 config.js.

导入的

没有。每个模块都有自己的范围。

您不是在“导入文件”或“将代码导入 运行”,您是在导入模块的导出绑定;该模块独立存在,它的导出可以在多个地方导入(而代码只被评估一次)。继承范围不适用于此。

所以是的,您需要 import { ImportantVar } from 'first/file/path.js' 在您的示例中。