Javascript 当我将一个JS文件导入另一个JS文件时会发生什么?

Javascript 当我将一个JS文件导入另一个JS文件时会发生什么?,javascript,Javascript,假设我有以下文件 file.js import Package from 'package'; Package.method(); main.js import Package from 'package'; Package.method(); 当我以以下方式将file.js导入main.js时 import './file'; Package.someOtherMethod(); 它是否等同于在main.js中包含以下内容 import Package from 'package'

假设我有以下文件

file.js

import Package from 'package';

Package.method();
main.js

import Package from 'package';

Package.method();
当我以以下方式将
file.js
导入
main.js

import './file';

Package.someOtherMethod();
它是否等同于在
main.js
中包含以下内容

import Package from 'package';

Package.method();

Package.someOtherMethod();
也就是说,我可以考虑使用
import./file'导入JS文件吗
就像在
main.js中插入代码一样

import Package from 'package';

Package.method();

Package.someOtherMethod();
它是否等同于在
main.js
中包含以下内容

import Package from 'package';

Package.method();

Package.someOtherMethod();
不是真的。从
“/file”
导入意味着加载了
“/file”
的任何依赖项,这(在本例中)意味着加载了
“包”
,这意味着将运行其顶级代码(
package.method()
)。这将在运行
main.js
的顶级代码之前发生(循环关系除外)。但这并不是说源代码已经从
“/file”
中取出并粘贴到
main.js
中。特别是,如果另一个文件也从
“/file”
导入,则其顶级模块代码是而不是第二次运行


Lin Clark有一篇关于模块加载的好文章,其中讨论了模块加载的三个阶段(解析、实例化和评估)以及如何处理循环关系。

使用
import
将运行文件并返回导出,或者如果文件已运行,则仅返回导出。
在main.js文件中未定义。模块有一个单独的名称空间。