Node.js全局对象在JavaScript中有一个特殊的对象,叫做全局对象,它和它的所有属性在程序的任何地方都可以访问到,即JS的全局对象是window,Node的全局对象是全局的。在node.js中,所有全局变量都是全局对象的属性。在Node.js中,我们可以直接访问全局属性,而无需将其包含在应用程序中。全局对象和全局变量的作用是作为全局变量的宿主。像window,什么是全局变量?满足以下条件的变量称为全局变量:1.定义在最外层的变量;2.全局对象的属性;3.隐式定义的变量(直接赋值定义的变量)。当我们定义一个全局变量时,这个变量也会成为一个全局属性。这里需要注意的是,在Node.js中不能在最外层定义变量。因为所有的用户代码都属于当前模块,而模块本身并不是最外层的上下文。注意:总是使用var来定义变量,避免引入全局变量,因为全局变量会污染命名空间,增加代码耦合的风险。接下来看node:中的全局变量__filename(两个下划线),表示当前执行脚本的文件名。它会指定文件所在位置的绝对路径,命令行参数指定的文件名不一定会变。如果在模块中,则返回值是模块文件的路径。示例结果__dirname:表示当前执行脚本的目录setTimeout(cb,ms):定时器第一个参数为指定函数,第二个参数为毫秒,返回值为代表定时器函数sayHello的句柄值(){console.log('HelloWorld')}setTimeout(sayHello,2000)//结果是两秒后输出HelloWorldClearTimeout(t):清除定时器,用于停止之前setTimeout创建的定时器。参数t是由setTimeout函数创建的定时器。functionsayHello(){console.log('HelloWorld')}lett=setTimeout(sayHello,2000)clearTimeout(t)setInterval(cb,ms):setInterval第一个参数是一个函数,第二个参数是毫秒,返回一个代表定时器的句柄值,与setTimeout()方法的区别在于setInterval会不断调用该函数,直到clearInterval()被调用或窗口关闭functionsayHello(){console.log('HelloWorld')//clearInterval(t)如果不写clearInterval,程序会一直打印HelloWorld}lett=setInterval(sayHello,2000)接下来是控制台方法,用于提供控制台标准输出,主要是用于调试。1console.log(data)将字符打印到以换行符结尾的标准输出流。该方法接收多个参数,如果只有一个参数,则输出该参数的字符串形式。如果有多个参数,将以类似于C语言中printf()命令的格式输出。2console.info(data)该命令的作用是返回信息性消息。此命令与console.log没有太大区别。除了在chrome中只输出文字,其余都会显示蓝色感叹号。3console.error(data)输出错误信息。发生错误时,控制台会显示一个红叉。4console.warn(data)输出警告信息。控制台上出现黄色感叹号。5console.dir(obj[,options])用于检查对象并以易于阅读和打印的格式显示它。6console.time(label)输出时间,表示开始计时。7console.timeEnd(label)结束时间,表示计时结束。8console.trace(message[,...])当前执行代码在栈中的调用路径。这个测试函数对运行很有帮助,只需要在你要测试的函数中添加console.trace即可。9console.assert(value,message)用于判断表达式或变量是否为真。它接收两个参数,第一个参数是一个表达式,第二个参数是一个字符串。只有第一个参数为false,才会输出第二个参数,否则没有结果。下一篇继续写全局对象---进程
