Node.js 全局对象

JavaScript 中有一个特有之对象,称为全局对象(Global
Object),它及其具有属性都可以先后的别样地方看,即全局变量。

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

 

在 Node.js 我们得以一直看到 global 的特性,而无需要在应用中含有它。


大局对象以及全局变量

global 最根本之企图是作为全局变量的宿主。按照 ECMAScript
的概念,满足以下条 件的变量是全局变量:

  • 以最为外层定义之变量;
  • 大局对象的性能;
  • 隐式定义之变量(未定义直接赋值的变量)。

当你定义一个全局变量时,这个变量同时也会见变成全局对象的性能,反之亦然。需要注
意的是,在 Node.js
中你免容许在最好外层定义变量,因为有用户代码都是属于即模块的,
而模块本身不是极度外层上下文。

注意: 永远使用 var 定义变量以避免引入全局变量,因为全局变量会招
命名空间,提高代码的耦合风险。

process

process 是一个全局变量,即 global 对象的属性。

它们用来描述当前Node.js
进程状态的对象,提供了一个及操作系统的简约接口。通常在公写本地命令行程序的早晚,少不了要
和它们打交道。下面用见面介绍 process 对象的局部太常用之积极分子方法。

序号 事件 & 描述
1 exit
当进程准备退出时触发。
2 beforeExit
当 node 清空事件循环,并且没有其他安排时触发这个事件。通常来说,当没有进程安排时 node 退出,但是 ‘beforeExit’ 的监听器可以异步调用,这样 node 就会继续执行。
3 uncaughtException
当一个异常冒泡回到事件循环,触发这个事件。如果给异常添加了监视器,默认的操作(打印堆栈跟踪信息并退出)就不会发生。
4 Signal 事件
当进程接收到信号时就触发。信号列表详见标准的 POSIX 信号名,如 SIGINT、SIGUSR1 等。

 

 

 

 

 

实例

创文件 main.js ,代码如下所示:

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

  // 以下代码永远不会执行
  setTimeout(function() {
    console.log("该代码不会执行");
  }, 0);

  console.log('退出码为:', code);
});
console.log("程序执行结束");

履 main.js 文件,代码如下所示:

node main.js

程序执行结束退出码为: 0