global
一、全局对象
global:JavaScript 中window是全局对象,而node.js中global是全局对象,但是window != global,window只是类似一个global的属性,除了global本身以外,其他的全局变量都是global对象的属性。定义在 global 上面的变量,不需要在模块中通过 exports 输出,其他模块中也能使用。
注意在使用时要谨慎处理,如果滥用则很可能引起变量污染。
console:提供命令行环境中的标准输入,标准输出功能,console有两个特定的组件:
1) 一个 Console
类,包含 console.log()
、 console.error()
和 console.warn()
等方法,可以被用于写入到任何 Node.js 流。console.error()
和 console.warn()作用相同。
2) 一个全局的 console
实例,可被用于写入到 process.stdout
和 process.stderr
。 全局的 console
使用时无需调 用 require('console')
。
注意:全局的console根据环境来判断是同步还是异步
process:表示Node所处的当前进程,提供了当前Node.js进程的有关信息,允许开发者与该进程互动。
输出:process.stdout/process.stderr
输入:process.stdin
process.nextTick:相当于一个预约函数,在定时器那里有详细介绍
process.cwd(); //输出我们执行node命令所在的绝对路径,而__dirname是输出我们执行js文件所在的绝对路径
process.stdout:standard output 标准输出
process.stderr:standard error 标准错误输出
console的输出方法实际上就是调用的process.stdout和process.stderr来完成的。
二、全局变量
1、_filename:指向当前运行的脚本文件名。
2、_dirname:指向当前运行的脚本所在的目录。
按照 ECMAScript 的定义,满足以下条 件的变量是全局变量:
1):在最外层定义的变量
2):全局对象的属性
3):隐式定义的变量(未定义直接赋值的变量)
注意:在node.js中不可以在最外层定义变量,因为所有用户代码都是属于当前模块的,而模块本身不是最外层上下文。
三、全局函数:
定时器函数:共有4个,分别是setTimeout(), clearTimeout(), setInterval(), clearInterval()。
1、setTimeout(cb, ms)
全局函数在指定的毫秒ms中只执行一次指定的函数cd
测试代码1: 会在2s后执行test函数,并输出hello
function test(){
console.log("hello");
}
setTimeout(test,2000);
测试代码2: 输出:0#,1#.................5#,666666,是因为js是单线程的,每次只能执行一条语句,就意味着会出现阻塞异步事件的发生,所以当异步发行时,定时器将会排在执行队列的最后等待执行,解决方法测试代码3所示:
for(var i= 0;i<6;i++){
console.log(i)
setTimeout( function(){
console.log(i)
},500);
console.log("#")
}
测试代码3: 输出结果0===,1===,2===
for(var i = 0;i<3;i++){
(function(i){
var t = setTimeout(function(){
console.log(i)
console.log("===")
},500)
})(i);
}
2、clearTimeout(t)
用于停止1、 setTimeout(cb, ms)创建的定时器。通常是和setTimeout(cb, ms)成对使用,t是setTimeout(cb, ms)函数创建的定时器。
测试代码:输出为空,因为定时器已经被清除
function test(){
console.log("hello");
}
var t = setTimeout(test,2000);
clearTimeout(t)
3、setInterval(cb, ms)
每隔ms时间就会执行一次cd函数,除非使用clearInterval() 来清除此计时器,否则会一直执行下去;clearInterval() 与setInterval()也是成对使用
测试代码:每隔两秒会输出一个hello,hello。。。。。。。。直到你按下 ctrl + c 按钮。
function test(){
console.log("hello");
}
setInterval( test,2000)
4、使用clearInterval():
测试代码:输出为空
function test(){
console.log("hello");
}
var t = setInterval( test,2000)
clearInterval(t)