JavaScript中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。在浏览器JavaScript中,通常 window 是全局对象。
而Node.js中的全局对象是global,所有全局变量(除了 global 本身以外)都是 global 对象的属性。Node.js中,我们可以直接访问到 global的属性,而不需要在应用中包含它。那么node中有哪些全局函数?
node全局函数:
1、定时器函数:
共有4个,分别是:setTimeout(), clearTimeout(), setInterval(), clearInterval()。
setTimeout(cb, ms)
setTimeout(cb, ms)全局函数在指定的毫秒(ms)数后执行指定函数(cb)。:setTimeout() 只执行一次指定函数。返回一个代表定时器的句柄值。
实例
创建文件 main.js ,代码如下所示:
function printHello(){
console.log( "Hello, World!");
}
// 两秒后执行以上函数
setTimeout(printHello, 2000);
执行 main.js 文件,代码如下所示:$ node main.js
Hello, World!
clearTimeout(t)
clearTimeout( t )全局函数用于停止一个之前通过 setTimeout() 创建的定时器。 参数 t 是通过 setTimeout() 函数创建的定时器。
实例
创建文件 main.js ,代码如下所示:
function printHello(){
console.log( "Hello, World!");
}
// 两秒后执行以上函数
var t = setTimeout(printHello, 2000);
// 清除定时器
clearTimeout(t);
执行 main.js 文件,代码如下所示:
$ node main.js
setInterval(cb, ms)
setInterval(cb, ms)全局函数在指定的毫秒(ms)数后执行指定函数(cb)。返回一个代表定时器的句柄值。可以使用 clearInterval(t) 函数来清除定时器。setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。
实例
创建文件 main.js ,代码如下所示:
function printHello(){
console.log( "Hello, World!");
}
// 两秒后执行以上函数
setInterval(printHello, 2000);
执行 main.js 文件,代码如下所示:$ node main.js
以上程序每隔两秒就会输出一次"Hello, World!",且会永久执行下去,直到你按下 ctrl + c 按钮。
2、require函数:用于加载模块。
参数为完整路径的模块文件名,或直接是模块名
require.main:
用于检测一个模块是否为应用程序中的主模块(写在被检测的模块文件内部)if(module === require.main){
console.log('true')
}
对于相同模块的多次引用不会引起模块内代码的多次执行
require.resolve:查询某个模块文件的带有完整绝对路径的文件名。不过并不会加载该模块require.resolve('./testModule.js')
require.cache对象:代表缓存了所有已被加载模块的缓存区console.log(require.cache)
可以通过争名来访问某个模块require.cache['模块文件名']