首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS中的导入(Require)模块也执行整个代码吗?

JS中的导入(Require)模块也执行整个代码吗?
EN

Stack Overflow用户
提问于 2021-01-09 02:07:17
回答 1查看 494关注 0票数 1

让moduleFile.js成为

代码语言:javascript
复制
const calc = {
    add(a,b) = {return a+b},
    sub(a,b) = {return a-b}
}

console.log(`hello from module`);

exports.calcModule = calc;

并设main.js与moduleFile.js处于相同的位置

代码语言:javascript
复制
const { calcModule } = require(`./moduleFile`);

console.log(calcModule.add(1,2));

当我在控制台中将main.js作为$ node main.js执行时

结果就像

代码语言:javascript
复制
hello from module
3

我很难理解hello from module也是打印出来的。

导入模块是否包括执行整个模块文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-09 02:10:02

是。当CommonJS模块第一次加载require()时,任何顶级代码都会被执行。如您所见,这必须是这样的,以便exports.calcModule = calc运行并为模块建立导出,您的console.log('hellow from module')也将运行。

加载该模块后,将缓存该模块的任何其他对require()的调用,因此该模块的原始执行将返回导出对象,顶级代码将不再运行。因此,无论模块在程序中加载了多少次,顶层代码也只能运行一次。

导入一个模块包括执行整个模块文件吗?

是的,它执行正在加载的模块中的所有顶级代码。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65638667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档