我在学习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。