为什么导入文件可以访问该文件的某些部分,但不能访问未导出的内容?



我在学习React教程,其中一个包含一些函数和各种控制台日志语句等的javascript文件a被导入到另一个javascript文件B中。

文件A中的其中一个函数随后在文件B中被调用,但出现了错误,但文件A中所有控制台日志语句和其他命令都执行良好。

我想知道为什么文件A的某些部分运行正常,但函数运行不正常,导入整个文件本质上不会将该文件中的所有内容都纳入文件B的范围吗?

例如:

a.js

console.log("hi");
function test1() {
console.log("test1");
}

b.js

import './a.js';
test1();

。。。导入整个文件不是实质上将该文件中的所有内容都纳入文件B的范围吗?

不,一点也不。您所展示的示例模块不导出任何内容,因此其中的所有内容(test1函数(对模块来说都是完全私有的。这是模块的主要好处之一:它们为您不想共享的模块详细信息提供了私有范围,并以明确的方式共享您想要共享的内容。

我想知道为什么文件A的某些部分运行正常,但函数运行不正常。。。

这是因为您已经导入了模块。即使模块不导入或导出任何内容,它的顶级代码仍然作为加载过程的一部分运行(第一次导入时(。有些模块的设计纯粹是为了加载它们的副作用(它们的顶级代码的作用(。你的例子就是这样;它的副作用是它所做的CCD_ 2。

最新更新