gpt4 book ai didi

javascript - 为什么 global.module 在文件中未定义,但在 Node REPL 中它是全局对象?

转载 作者:太空宇宙 更新时间:2023-11-04 00:32:10 24 4
gpt4 key购买 nike

如果我:

console.log(global.module);

在文件 foo.js 中并使用以下命令执行它:

node foo.js

它输出未定义。但是,如果我在启动 Node REPL 时访问全局对象上的相同属性,那么它就是一个对象。作为参数传递给模块包装器函数的相同实际对象,模块

为什么它不存在于全局对象的文件中,但存在于 REPL 中?

最佳答案

在模块文件的上下文中,module 不是全局变量,它实际上是局部变量。 Node模块代码在执行之前实际上是用这样的代码包装的:

(function (exports, require, module, __filename, __dirname) { 

所有这些变量对于每个模块都必须是唯一的,因此它们不能是全局变量。

但是,在 REPL 和其他在全局范围内求值的代码中,这些变量会作为全局对象的属性添加,因此您仍然可以使用 require 等内容。

关于javascript - 为什么 global.module 在文件中未定义,但在 Node REPL 中它是全局对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40567306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com