Node.js全局对象本质上是全局的,并且它们在所有模块中都可用。 我们不需要在我们的应用程序中包含这些对象,而是可以直接使用它们。 这些对象是模块,函数,字符串和对象本身。
12.1. __filename
__filename 表示正在执行的代码的文件名。 这是此代码文件的已解析绝对路径。 对于主程序,这不一定与命令行中使用的文件名相同。 模块内部的值是该模块文件的路径。
12.1.1. 示例
- 使用以下代码创建名为main.js的js文件:
// Let's try to print the value of __filename console.log( __filename );
- 现在运行main.js来查看结果:
$ node main.js
。 - 根据您的程序的位置,它将打印主文件名如下:
/web/com/1427091028_21099/main.js
。
12.2. __dirname
__dirname 表示当前正在执行的脚本所在的目录的名称。
12.2.1. 示例
- 使用以下代码创建名为main.js的js文件:
// Let's try to print the value of __dirname console.log( __dirname );
- 现在运行main.js来查看结果:
$ node main.js
。 - 根据您的程序的位置,它将打印当前目录名称如下:
/web/com/1427091028_21099
。
12.3. setTimeout(cb, ms)
setTimeout(cb, ms) 全局函数用于在至少ms毫秒后运行回调cb。 实际延迟取决于OS定时器粒度和系统负载等外部因素。 计时器不能超过24.8天。
此函数返回一个不透明值,表示可用于清除计时器的计时器。
12.3.1. 示例
- 使用以下代码创建名为main.js的js文件:
function printHello() { console.log( "Hello, World!"); } // Now call above function after 2 seconds setTimeout(printHello, 2000);
- 现在运行main.js来查看结果:
$ node main.js
。 - 确认输出稍有延迟后打印:
Hello, World!
。
12.4. clearTimeout(t)
clearTimeout(t) 全局函数用于停止先前使用 setTimeout()
创建的计时器。 这里 t 是 setTimeout()
函数返回的计时器。
12.4.1. 示例
- 使用以下代码创建名为main.js的js文件:
function printHello() { console.log( "Hello, World!"); } // Now call above function after 2 seconds var t = setTimeout(printHello, 2000); // Now clear the timer clearTimeout(t);
- 现在运行main.js来查看结果:
$ node main.js
。 - 验证输出,您将找不到任何打印的内容。
12.5. setInterval(cb, ms)
setInterval(cb, ms) 全局函数用于在至少ms毫秒后重复运行回调cb。 实际延迟取决于OS定时器粒度和系统负载等外部因素。 计时器不能超过24.8天。
此函数返回一个不透明值,表示可用于使用clearInterval(t) 函数清除计时器的计时器。
12.5.1. 示例
- 使用以下代码创建名为main.js的js文件:
function printHello() { console.log( "Hello, World!"); } // Now call above function after 2 seconds setInterval(printHello, 2000);
- 现在运行main.js来查看结果:
$ node main.js
。 - 上述程序将在每2秒后执行
printHello()
。
12.6. 全球对象
下表提供了我们在应用程序中经常使用的其他对象的列表。 有关更多详细信息,请参阅官方文档。
下一节:Node.js模块库中有几个实用程序模块。 这些模块非常常见,在开发任何基于节点的应用程序时经常使用。