【Node】【8】全局对象和全局变量

在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性。

在 Node.js 中,有一些全局对象和全局变量可供使用。这些对象在 Node.js 环境中是全局可访问的,以下是一些常见的 Node.js 全局对象的使用方法:

Node中的全局对象

1. global 对象

global 对象是 Node.js 中的全局对象,类似于浏览器环境中的 window 对象。可以在任何地方访问 global 对象中定义的变量和函数。

global.globalVar = 'Global Variable';

global.globalFunction = function() {
    console.log('This is a global function');
};

console.log(global.globalVar); // 输出: Global Variable
globalFunction(); // 输出: Global Function

2. process 对象

process 对象提供有关当前 Node.js 进程的信息,并允许与进程进行交互,比如获取环境变量、退出进程等。

process.on('exit', function(code) {

  // 由于进程即将退出,事件循环会被中止,这个 setTimeout 的回调函数永远不会执行。
  setTimeout(function() {
    console.log("该代码不会执行");
  }, 0);
  
  console.log('退出码为:', code);
});
console.log("程序执行结束");

Node.js 在程序结束时也会执行一些清理操作,并隐式触发 exit 事件。也可以手动触发 process.exit()

3. console 对象

console 对象提供了标准的输出和错误输出功能,可用于在控制台输出信息。

console.log('This is a log message');
console.info('This is an info message');
console.error('This is an error message');
console.warn('This is a warning message');

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4. Buffer

Buffer 类用于处理二进制数据,是 Node.js 中处理二进制数据的核心模块。

const buf = Buffer.from('hello', 'utf8');
console.log(buf.toString('hex')); // 将字符串转换为十六进制

5. require 函数

require 函数用于引入模块,是 Node.js 模块化系统的核心,可以用于在代码中引入其他模块。

const fs = require('fs'); // 引入文件系统模块

Node中的全局变量:

定义全局变量的4种方法
  1. 使用 global 对象来定义全局变量(不推荐)

  2. 省略变量直接赋值,该变量将自动成为全局变量,并且会成为全局对象global的属性(不推荐)
    下面的例子,打印global 里的 内容 ,会发现a 也是 global的一个属性

a = 10 // 省略变量声明直接赋值
global.c = 30 // 使用 global 对象定义

function add(num) {
  if (num === 0) return num + a;
  if (num != 0 ) {
    return num + c;
  }
}

console.log(global)  // {a,c}
console.log(add(0)) //10
console.log(add(1)) //31

在这里插入图片描述

  1. 使用 process.env
process.env.MY_GLOBAL_VAR = 'This is a global variable using process.env';

这种方式通常用来定义环境变量,可以在整个应用程序中访问。

  1. 使用 globalThis(Node.js 12 及以上版本):

Node.js 12 开始支持 globalThis,它提供一个标准的访问全局对象的方式,适用于浏览器和 Node.js。

globalThis.myGlobalVar = 'This is a global variable using globalThis';

process.env.MY_GLOBAL_VAR = 'This is a global variable using process.env';
globalThis.myGlobalVar = 'This is a global variable using globalThis';
console.log("process.env.MY_GLOBAL_VAR=",process.env.MY_GLOBAL_VAR);
console.log("globalThis=",globalThis);

在这里插入图片描述

在模块中定义全局变量并导出:

全局变量,可以在应用程序的任何地方访问。然而,这种方法容易引起意外的变量覆盖或污染全局命名空间。更好的做法是创建一个模块,在模块中定义变量,并通过导出使其可在应用程序的其他部分中访问。这样可以更好地控制变量的作用域和可见性,避免全局变量带来的潜在问题。以下是一个示例

// globalVars.js
const myGlobalVar = 'This is a global variable within a module';

module.exports.myGlobalVar = myGlobalVar;

在其他文件中,通过引入模块来访问全局变量:

const { myGlobalVar } = require('./globalVars');
console.log(myGlobalVar); // 输出 'This is a global variable within a module'

Node中的全局变量

console.log( __filename ); //d:\LearningNode\1.js 当前正在执行的脚本的文件名
console.log( __dirname ); // d:\LearningNode 当前执行脚本所在的目录

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凭栏听雨客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值