我有一个名为fooModule
的模块。在这个模块内部,我导入了fooModule
(即自身):
import * as fooModule from './fooModule';
export function logFoo() {
console.log(fooModule)
}
当调用logFoo()
函数时,我可以看到fooModule的所有导出内容。这是如何实现的?我有一个名为fooModule
的模块。在这个模块内部,我导入了fooModule
(即自身):
import * as fooModule from './fooModule';
export function logFoo() {
console.log(fooModule)
}
当调用logFoo()
函数时,我可以看到fooModule的所有导出内容。这是如何实现的?import
并不会将一个值导入到变量中,而是使变量成为对导出变量的引用。请查看此处的一个可变变量示例,以及此问题获取确切术语。fooModule
变量,并将其实例化为一个对象,该对象具有模块的导出名称,即 ["logFoo"]
。 fooModule.logFoo
属性变成了 getter ,它将求值为模块作用域中的 logFoo
变量(如果你使用了 export {A as B}
,那么 fooModule.B
将解析为 A
,但在你的情况下两个名称相同)。logFoo
,并且函数声明被初始化(即 logFoo
被赋予函数)logFoo
时,fooModule
将引用包含 logFoo
的命名空间。没有魔法 :-)