导入的文件是否继承其导入器的范围?
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'
在您的示例中。
当在 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'
在您的示例中。