JavaScript 中有一个特殊的对象, 称为全局对象(Global Object), 它及其所有属性都可以在程序的任何地方访问, 即全局变量. 在浏览器 JavaScript 中, 通常 Windows 是全局对象. 而在 node 中同样有全局对象, 下面让我们看一下 node 中的全局对象.
node.JS 中的全局对象是 global, 所有全局变量 (除了 global 本身以外) 都是 global 对象的属性. 在 Node.JS 我们可以直接访问到 global 的属性, 而不需要在应用中包含它.
全局对象与全局变量
global 最根本的作用是作为全局变量的宿主. 按照 ECMAScript 的定义, 满足以下条件的变量是全局变量:
在最外层定义的变量;
全局对象的属性;
隐式定义的变量(未定义直接赋值的变量).
当你定义一个全局变量时, 这个变量同时也会成为全局对象的属性, 反之亦然. 需要注 意的是, 在 Node.JS 中你不可能在最外层定义变量, 因为所有用户代码都是属于当前模块的, 而模块本身不是最外层上下文.
注意: 最好不要使用 var 定义变量以避免引入全局变量, 因为全局变量会污染命名空间, 提高代码的耦合风险.
__filename:node 固定的全局变量, 表示当前文件绝对路径,(包含自身)
__dirname:node 固定的全局变量, 表示当前文件的路径(不包含自身)
全局函数: 定时器 setInterVal,setTimeout
process 是一个全局变量, 即 global 对象的属性.
它用于描述当前 Node.JS 进程状态的对象, 提供了一个与操作系统的简单接口. 通常在你写本地命令行程序的时候, 少不了要 和它打交道. 下面将会介绍 process 对象的一些最常用的成员方法.
- console.log(__filename);
- console.log(__dirname);
- var num = 0;// 全局变量
- var timer = setInterval(function () {
- console.log('haha');
- num++;
- if(num==5){
- clearInterval(timer)
- }
- },1000);
- console.log(process.version)//node 版本信息
输出如下:
C:\Users\fangzhou.zhu\Desktop \ 其他 \ node\globalObj.JS
C:\Users\fangzhou.zhu\Desktop \ 其他 \ node
- 10
- v8.4.0
- haha
- haha
- haha
- haha
- haha
- function AA() {
- var a = 10;// 局部变量
- b = 10;// 全局变量}
- AA();
- console.log(b);//10
- console.log(a);// 报错 a is not defined
来源: http://www.css88.com/qa/node-js/10944.html