module作用域
__filename
node.js中,在任何模块文件内部,可以使用__filename变量获取当前模块文件的带有完整绝对路径的文件名。
console.log(__filename)
总结:包含文件名称的全路径。当前模块的文件名(处理后的绝对路径)。不一定与命令行中使用的名称一致。此变量虽然看似全局的,但实际上不是。
__dirname
当前模块的目录名
console.log(__dirname)
总结:不包含文件名称,此变量虽然看似全局的,但实际上不是。
timer(定时器)
timer 模块暴露了一个全局的 API,用于在某个未来时间段调用调度函数。 因为定时器函数是全局的,所以使用该 API 无需调用 require(‘timers’)。
var timer = setInterval(function(){
console.log(123);
},1000)
setTimeout(function(){
clearTimeout(timer);
},2000)
global
在浏览器中,顶层作用域是全局作用域。 这意味着在浏览器中 var something 将定义一个新的全局变量。 在 Node.js 中,这是不同的。 顶层作用域不是全局作用域,Node.js 模块中的 var something 的作用域只在该模块内。
global.console.log(1234)
总结:在Node.js中没有window对象,但是有一个类似的对象global,访问全局成员的时候可以省略global
process进程
process 对象是一个全局变量,提供 Node.js 进程的有关信息以及控制进程。 因为是全局变量,所以无需使用 require()
// argv是一个数组,默认情况下,前两项数据分别是:Node.js环境的路径;当前执行的js文件的全路径
console.log(process.argv)
// 打印当前系统的架构(64位或者32位)
console.log(process.arch)