Node.js 的 Global全局对象

模块分2种,1)基于commonjs规范编写的普通模块,前面已经讲过,2)Global全局对象,即无需引用就可以直接使用的对象,本节主要讲第二种。另外,需要注意的是全局对象和global关键字的区别。

内置全局对象

内置全局对象指的的是在所有模块里无需引用就可以使用的模块。

具体如下

编号对象描述
1Buffer数据类型
2__dirname当前文件目录
3__filename当前文件名称
4console控制台输出模块
5exportscommonjs关键字
6global共享的全局对象
7modulecommonjs关键字
8process当前node进程对象
9require()、require.cache、require.extensions、require.resolve()commonjs关键字
10setImmediate(callback[, …args])event loop相关api
11setInterval(callback, delay[, …args])event loop相关api
12setTimeout(callback, delay[, …args])event loop相关api
13clearImmediate(immediateObject)event loop相关api
14clearInterval(intervalObject)event loop相关api
15clearTimeout(timeoutObject)event loop相关api

具体分类如下

1)模块包装而暴露的


下面的关键字都是全局的,虽然这样被注入进来的,只能单文件生效

  • exports

  • require、require.cache、require.extensions、require.resolve()

  • module

  • __filename

  • __dirname

2)内置process模块

在第5章《Node.js是如何执行的》里有针对process模块的详细介绍。作为核心模块,它是对当前Node现场各种信息的绑定,作为全局模块,是一个极其明智的选择,Java8借鉴了这种实现。

3)控制台console模块

比如我们常用的console.log(),在js语言里有实现,在node又单独实现了一次,原因是在node需要在终端输出,这和在浏览器里的行为是不一样的。在lib/console.js

它是在lib/internal/bootstrap_node.js里被绑定为全局对象的。

4)针对event loop相关api的实现

主要是setImmediate、setInterval、setTimeout和对应的clear方法实现。其实大家也可以想想,如果想对event loop的队列进行操作,做成全局模块是非常方便的。

除了上述4种类型外,还有特定类型 Bufferglobal 对象,后面会分别进行讲解。


全文完

欢迎关注Cnode官方公众号【node全栈】

如果想参与评论,请点击阅读原文链接,进入国内最专业的cnode论坛

你身边如果有朋友对Node.js或全栈感兴趣,可以转发给他们看看哦,O(∩_∩)O先谢过

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Node.js 中,有两种声明全局变量的方法: 1. 使用 `global` 对象 你可以使用 `global` 对象来声明全局变量。在 Node.js 中,所有的全局变量都是 `global` 对象的属性。例如: ``` global.a = 1; console.log(a); // 1 ``` 注意:在模块中声明的变量不会自动成为全局变量。你必须使用 `global` 对象来声明全局变量。 2. 使用 `globalThis` 对象 在 ECMAScript 2020 中,新增了一个全局对象 `globalThis`,它可以在所有的 JavaScript 环境中使用,包括浏览器和 Node.js。你可以使用 `globalThis` 对象来声明全局变量,例如: ``` globalThis.a = 1; console.log(a); // 1 ``` 注意:`globalThis` 对象Node.js 12.0 及更高版本中支持。 总结:在 Node.js 中,你可以使用 `global` 或 `globalThis` 对象来声明全局变量。 ### 回答2: 在Node.JS中,可以使用global对象来声明全局变量。global对象Node.JS全局对象,可以在应用程序的任何地方访问。 要声明一个全局变量,可以使用global关键字来设置变量的值。例如,要声明一个名为globalVar的全局变量,并将其值设置为10,可以使用以下代码: global.globalVar = 10; 这样,globalVar变量就可以在应用程序的任何文件或模块中使用,无需再额外声明或引入。 同时,也可以使用global关键字来访问和修改已经存在的全局变量。例如,已经存在一个名为globalVar的全局变量,想要将其值改为20,可以使用以下代码: globalVar = 20; 需要注意的是,使用全局变量可能会导致命名冲突和代码维护上的困难。因此,应尽量避免过多地使用全局变量,而是使用模块导出和引入的方式来实现变量的共享和访问。只有在确实需要在整个应用程序中共享变量的情况下,才考虑使用全局变量。 总结来说,Node.JS中可以使用global对象来声明和访问全局变量,但应慎重使用,避免出现命名冲突和维护困难的问题。 ### 回答3: 在Node.js中,可以通过两种方式声明全局变量。 第一种方式是使用global对象global对象Node.js中是一个全局变量,可以在任何地方访问。我们可以直接给global对象添加属性来声明全局变量,例如: ``` global.myVariable = 5; ``` 这样,myVariable变量就成为了一个全局变量,在任何地方都可以访问和使用。 第二种方式是使用global关键字。在Node.js的模块中,可以使用global关键字定义一个全局变量,使其在整个应用程序范围内可用。例如,在一个模块中声明一个全局变量可以这样写: ``` global.myVariable = 10; ``` 然后,在其他模块中也可以直接访问和使用这个全局变量。 需要注意的是,尽量避免滥用全局变量,因为过多的全局变量会增加代码的复杂性和耦合性,不利于代码的维护和重构。在开发过程中,应该优先考虑使用局部变量和模块间的数据传递来实现功能。只在有必要的情况下使用全局变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值