Node中给我们提供了一些全局对象,方便我们进行一些操作
特殊的全局对象
这些对象可以在任何模块中使用,但是不能在命令交互行中使用
__dirname:获取当前文件夹所在的路径,不包括文件夹本身
__filename:获取当前文件夹所在的路径,包括文件夹本身
exports:导出 导出的是一个对象
module:模块
require():导入 一个函数,导入的是一个对象
常见的全局对象
process:process提供了Node进程中相关的信息:比如Node的运行环境、参数信息等
console:提供了简单的调试控制台
定时器函数:在Node中使用定时器有好几种方式:
setTimeout(callback, delay[, ...args]):callback在delay毫秒后执行一次;
setInterval(callback, delay[, ...args]):callback每delay毫秒重复执行一次;
setImmediate(callback[, ...args]):callbackI / O事件后的回调的“立即”执行;
这里先不展开讨论它和setTimeout(callback, 0)之间的区别;
process.nextTick(callback[, ...args]):添加到下一次tick队列中;
具体的讲解,也放到事件循环中说明;
global对象
global对象也是一个对象,事实上我们提到的process,console,等都被放到global中
global和window的区别
在浏览器中,全局变量都是在window上的,比如有document、setInterval、setTimeout、alert、console等等
在Node中,我们也有一个global属性,并且看起来它里面有很多其他对象。
但是在浏览器中执行的JavaScript代码,如果我们在顶级范围内通过var定义的一个属性,默认会被添加到window
但是在node中,我们通过var定义一个变量,它只是在当前模块中有一个变量,不会放到全局中