global全局对象
在Node.js里面有一个叫global的对象,它的属性和方法可以在全局中访问到,即全局变量。
在游览器Javascript中全局对象是window,而Node.js中全局对象是global。
全局变量在所有模块中均可使用。 但以下变量的作用域只在模块内
| 12
 3
 4
 5
 
 | __dirname__filename
 exports
 module
 require()
 
 | 
__dirname
| 1
 | console.log(__dirname) # 获取当前模块的文件所在的文件夹名称的绝对路径
 | 
__filename
| 1
 | console.log(__filename) # 获取当前模块的文件名称-解析后的绝对路径
 | 
| 12
 3
 
 | setImmediate(() => {console.log('坑呀')
 });
 
 | 
| 12
 3
 4
 
 | let a = setImmediate(() => {console.log('坑呀')
 });
 clearImmediate(a)
 
 | 
process 进程
process.cwd()
| 1
 | console.log(process.cwd()) # 方法返回 Node.js 进程当前工作的目录。
 | 
process.argv
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | console.log(process.argv)
 
 
 node a.js a=1 b=2
 
 
 [ 'C:\\Program Files\\nodejs\\node.exe',
 'c:\\Users\\windows\\Desktop\\新建文件夹\\a.js',
 'a=1',
 'b=2' ]
 
 | 
process.argv 属性返回一个数组,这个数组包含了启动Node.js进程时的命令行参数。第一个元素为process.execPath。如果需要获取argv[0]的值请参见 process.argv0。第二个元素为当前执行的JavaScript文件路径。剩余的元素为其他命令行参数。
process.env
| 1
 | console.log(process.env) 
 | 
可以修改这个对象
| 12
 
 | process.env.foo = 'bar';console.log(process.env.foo);
 
 | 
但是不可以用这种方法去修改
| 1
 | node http.js  'process.env.foo = "bar"'
 | 
用 delete从process.env中删除一个属性
| 12
 3
 
 | process.env.foo = 'bar';delete process.env.foo;
 console.log(process.env.foo); # 输出 undefined
 
 | 
注: 在process.env中新增一个属性,会将属性值转换成字符串、 在Windows系统下,环境变量是不区分大小写的。
process.memoryUsage()
| 12
 3
 4
 5
 6
 7
 
 | console.log(process.memoryUsage()) # 返回Node.js进程的内存使用情况的对象,该对象每个属性值的单位为字节。
 
 { rss: 23588864,
 heapTotal: 7708672,
 heapUsed: 4430656,
 external: 8224 }
 
 | 
rss(resident set size):所有内存占用,包括指令区和堆栈。
heapTotal:”堆”占用的内存,包括用到的和没用到的。
heapUsed:用到的堆的部分。
external: V8 引擎内部的 C++ 对象占用的内存。
process.chdir(directory)
| 12
 3
 4
 5
 6
 7
 
 | console.log(process.cwd())process.chdir('..')
 console.log(process.cwd())
 
 // 输出   '..'切换到上一级目录
 C:\Users\windows\Desktop\新建文件夹
 C:\Users\windows\Desktop
 
 | 
process.nextTick(callback[, …args])
| 12
 3
 
 | process.nextTick(function(){console.log('nextTick');
 })
 
 | 
参考
http://www.ruanyifeng.com/blog/2017/04/memory-leak.html
http://nodejs.cn/api/process.html#process_process
http://nodejs.cn/api/globals.html