Node.js入门教程(二十三):全局对象
一、什么是全局对象JavaScript 中有一个特殊的对象称为全局对象Global Object它及其所有属性都可以在程序的任何地方访问即全局变量。在浏览器 JavaScript 中通常window是全局对象而 Node.js 中的全局对象是global所有全局变量除了global本身以外都是global对象的属性。在 Node.js 中我们可以直接访问到global的属性而不需要在应用中包含它。二、全局对象与全局变量global最根本的作用是作为全局变量的宿主。按照 ECMAScript 的定义满足以下条件的变量是全局变量在最外层定义的变量全局对象的属性隐式定义的变量未定义直接赋值的变量当你定义一个全局变量时这个变量同时也会成为全局对象的属性反之亦然。需要注意的是在 Node.js 中你不可能在最外层定义变量因为所有用户代码都是属于当前模块的而模块本身不是最外层上下文。注意最好不要使用var定义变量以避免引入全局变量因为全局变量会污染命名空间提高代码的耦合风险。三、常用全局对象__filename__filename表示当前正在执行的脚本的文件名。它将输出文件所在位置的绝对路径且和命令行参数所指定的文件名不一定相同。如果在模块中返回的值是模块文件的路径。// 输出全局变量 __filename 的值 console.log(__filename);执行main.js文件$ node main.js /web/com/runoob/nodejs/main.js__dirname__dirname表示当前执行脚本所在的目录。// 输出全局变量 __dirname 的值 console.log(__dirname);执行main.js文件$ node main.js /web/com/runoob/nodejs四、定时器函数setTimeout(cb, ms)setTimeout(cb, ms)全局函数在指定的毫秒ms数后执行指定函数cb。setTimeout()只执行一次指定函数返回一个代表定时器的句柄值。function printHello() { console.log(Hello, World!); } // 两秒后执行以上函数 setTimeout(printHello, 2000);执行结果$ node main.js Hello, World!clearTimeout(t)clearTimeout(t)全局函数用于停止一个之前通过setTimeout()创建的定时器。参数t是通过setTimeout()函数创建的定时器。function printHello() { console.log(Hello, World!); } // 两秒后执行以上函数 var t setTimeout(printHello, 2000); // 清除定时器 clearTimeout(t);执行后不会有任何输出因为定时器被清除了。setInterval(cb, ms)setInterval(cb, ms)全局函数在指定的毫秒ms数后执行指定函数cb。返回一个代表定时器的句柄值。可以使用clearInterval(t)函数来清除定时器。setInterval()方法会不停地调用函数直到clearInterval()被调用或窗口被关闭。function printHello() { console.log(Hello, World!); } // 每两秒执行一次以上函数 setInterval(printHello, 2000);执行结果每隔两秒输出一次直到按下Ctrl C$ node main.js Hello, World! Hello, World! Hello, World! ……五、console 对象console用于提供控制台标准输出它是由 Internet Explorer 的 JScript 引擎提供的调试工具后来逐渐成为浏览器的实施标准。Node.js 沿用了这个标准提供与习惯行为一致的console对象用于向标准输出流stdout或标准错误流stderr输出字符。console 方法序号方法 描述1console.log([data][, ...])向标准输出流打印字符并以换行符结束2console.info([data][, ...])返回信息性消息与console.log差别不大3console.error([data][, ...])输出错误消息4console.warn([data][, ...])输出警告消息5console.dir(obj[, options])检查对象并以易于阅读的格式显示6console.time(label)开始计时7console.timeEnd(label)结束计时8console.trace(message[, ...])输出当前执行的代码在堆栈中的调用路径9console.assert(value[, message][, ...])判断表达式是否为真为 false 时输出消息console.log() 示例console.log(Hello world); console.log(byvoid%diovyb); console.log(byvoid%diovyb, 1991);运行结果Hello world byvoid%diovyb byvoid1991iovybconsole.trace() 示例console.trace();运行结果Trace: at Object.anonymous (/home/byvoid/consoletrace.js:1:71) at Module._compile (module.js:441:26) at Object..js (module.js:459:10) at Module.load (module.js:348:31) at Function._load (module.js:308:12) at Array.0 (module.js:479:10) at EventEmitter._tickCallback (node.js:192:40)综合示例console.info(程序开始执行); var counter 10; console.log(计数: %d, counter); console.time(获取数据); // 执行一些代码 console.timeEnd(获取数据); console.info(程序执行完毕。);执行结果$ node main.js 程序开始执行 计数: 10 获取数据: 0ms 程序执行完毕。六、process 对象process是一个全局变量即global对象的属性。它用于描述当前 Node.js 进程状态的对象提供了一个与操作系统的简单接口。process 事件序号事件 描述1exit当进程准备退出时触发2beforeExit当 node 清空事件循环并且没有其他安排时触发3uncaughtException当一个异常冒泡回到事件循环时触发4Signal 事件当进程接收到信号时触发如 SIGINT、SIGUSR1 等process 事件示例process.on(exit, function(code) { // 以下代码永远不会执行因为 exit 事件中无法执行异步操作 setTimeout(function() { console.log(该代码不会执行); }, 0); console.log(退出码为:, code); }); console.log(程序执行结束);执行结果$ node main.js 程序执行结束 退出码为: 0退出状态码状态码名称 描述1Uncaught Fatal Exception- 有未捕获异常2Unused- 保留由 Bash 预留用于内置误用3Internal JavaScript Parse Error- JavaScript 源码解析错误4Internal JavaScript Evaluation Failure- JavaScript 源码评估失败5Fatal Error- V8 里致命的不可恢复的错误6Non-function Internal Exception Handler- 内部异常处理函数为非函数7Internal Exception Handler Run-Time Failure- 异常处理函数自己抛出了异常8Unused- 保留9Invalid Argument- 未知参数或参数没有值10Internal JavaScript Run-Time Failure- JavaScript 源码运行时抛出错误12Invalid Debug Argument- 调试参数设置错误128Signal Exits- 接收到致命信号信号代码 128process 属性序号属性 描述1stdout- 标准输出流2stderr- 标准错误流3stdin- 标准输入流4argv- 命令行参数数组5execPath- Node 二进制文件的绝对路径6execArgv- Node 可执行文件与脚本文件之间的命令行参数7env- 当前 shell 的环境变量对象8exitCode- 进程退出时的代码9version- Node 的版本10versions- 包含 node 版本和依赖的属性11config- 编译当前 node 执行文件的配置选项12pid- 当前进程的进程号13title- 进程名默认值为 node14arch- 当前 CPU 的架构arm、ia32 或 x6415platform- 运行程序所在的平台系统16mainModule-require.main的备选方法process 属性示例// 输出到终端 process.stdout.write(Hello World! \n); // 通过参数读取 process.argv.forEach(function(val, index, array) { console.log(index : val); }); // 获取执行路径 console.log(process.execPath); // 平台信息 console.log(process.platform);执行结果$ node main.js Hello World! 0: node 1: /web/www/node/main.js /usr/local/node/0.10.36/bin/node darwinprocess 方法序号方法 描述1abort()- 触发 abort 事件让 node 退出并生成核心文件2chdir(directory)- 改变当前工作进程的目录3cwd()- 返回当前进程的工作目录4exit([code])- 使用指定的 code 结束进程5getgid()- 获取进程的群组标识POSIX 平台6setgid(id)- 设置进程的群组标识POSIX 平台7getuid()- 获取进程的用户标识POSIX 平台8setuid(id)- 设置进程的用户标识POSIX 平台9getgroups()- 返回进程的群组 ID 数组POSIX 平台10setgroups(groups)- 设置进程的群组 IDPOSIX 平台11kill(pid[, signal])- 发送信号给进程12memoryUsage()- 返回 Node 进程所用的内存状况13nextTick(callback)- 一旦当前事件循环结束调用回调函数14umask([mask])- 设置或读取进程文件的掩码15uptime()- 返回 Node 已经运行的秒数16hrtime()- 返回当前进程的高分辨时间process 方法示例// 输出当前目录 console.log(当前目录: process.cwd()); // 输出当前版本 console.log(当前版本: process.version); // 输出内存使用情况 console.log(process.memoryUsage());执行结果$ node main.js 当前目录: /web/com/runoob/nodejs 当前版本: v0.10.36 { rss: 12541952, heapTotal: 4083456, heapUsed: 2157056 }七、本章小结知识点说明global 对象Node.js 的全局对象所有全局变量的宿主__filename当前执行脚本的绝对路径__dirname当前执行脚本所在目录setTimeout / clearTimeout单次定时器及其清除setInterval / clearInterval重复定时器及其清除console控制台输出对象提供日志、计时、断言等方法process进程对象提供进程控制、环境信息、系统交互等方法提示process对象是 Node.js 中最重要的全局对象之一它提供了与进程和操作系统交互的丰富接口。在编写 CLI 工具、服务监控、进程管理等场景中process对象会被频繁使用。nextTick方法在异步编程中尤其重要它允许你将回调延迟到当前事件循环结束后执行。

相关新闻

Node.js入门教程(二十四):常用工具(util 模块)

Node.js入门教程(二十四):常用工具(util 模块)

一、util 模块概述util 模块是 Node.js 的一个内置模块,包含了实用工具函数,用于支持 JavaScript 编程中的调试、错误处理、格式化等功能。util 提供常用函数的集合,用于弥补核心 JavaScript 的功能过于精简的不足。util 模块中的功能涵盖了从…

2026/8/15 23:08:39 阅读更多 →
零知派ESP32--通过I2C 接口扩展芯片PCF8575使用矩阵键盘控制LED

零知派ESP32--通过I2C 接口扩展芯片PCF8575使用矩阵键盘控制LED

项目概述 本项目以 ESP32 为主控,通过 I2C 接口扩展芯片 PCF8575,将有限的主控引脚扩展为 16 路数字 I/O,并在其上挂载: 模块作用44 矩阵键盘人机输入,控制灯效与工作模式2 路高电平 LED状态指示 / 感应联动照明RGB …

2026/8/15 23:08:39 阅读更多 →
构建Codex Harness:驾驭AI代码生成,实现工程化与自动化测试

构建Codex Harness:驾驭AI代码生成,实现工程化与自动化测试

最近在推进一个大型项目的代码生成与自动化测试框架时,团队反复在代码一致性、测试覆盖率和工程规范落地这几个环节上卡壳。零散的脚本和工具链难以形成闭环,导致开发效率提升有限。本文将围绕“Codex Harness”这一工程化实践的核心概念,系统…

2026/8/15 23:08:39 阅读更多 →

最新新闻

Python酒店数据分析实战:从清洗到可视化

Python酒店数据分析实战:从清洗到可视化

1. 项目概述:酒店数据分析的价值与挑战 酒店行业每天产生海量数据——从客房预订、消费记录到客户评价,这些数据背后隐藏着提升运营效率的关键线索。去年帮一家连锁酒店做数据清洗时,我发现他们前台系统里沉淀着3年来的40万条订单记录&#x…

2026/8/15 23:57:53 阅读更多 →
每日英语-10

每日英语-10

1.a research assistant研究助理 a teaching assistant 助教 anassistant manager 副经理2.constant: adj.经常的,不断的 恒定的 n.不变的事物,常数,常量constant fear始终存在的恐惧 be in constant use经常使用 a constant speed恒定的速度…

2026/8/15 23:57:53 阅读更多 →
Maven依赖管理进阶:手动处理Jar包的原理、实战与工程化方案

Maven依赖管理进阶:手动处理Jar包的原理、实战与工程化方案

1. 项目概述:为什么我们需要“手动”处理Maven Jar?在Java开发的世界里,Maven几乎是构建和依赖管理的代名词。我们习惯了在pom.xml里声明一个依赖,然后执行mvn clean install,Maven就会自动从中央仓库下载对应的jar包&…

2026/8/15 23:57:53 阅读更多 →
私有化SSL证书管理工具Certd部署与自动化实践

私有化SSL证书管理工具Certd部署与自动化实践

1. 项目概述:为什么需要私有化SSL证书管理?SSL证书管理是每个运维工程师的必修课。过去几年我经手过数百个证书的部署和续期,最头疼的就是证书过期导致的业务中断。去年我们一个核心业务因为证书过期宕机47分钟,直接损失六位数。传…

2026/8/15 23:57:53 阅读更多 →
Python 爬虫网络质量评估实战:成功率、P95 延迟与错误分布怎么测

Python 爬虫网络质量评估实战:成功率、P95 延迟与错误分布怎么测

爬虫任务出现“偶发超时”时,最有价值的不是换一组配置继续跑,而是把失败拆成可量化的指标。同一目标站点在不同时间段可能出现连接超时、读取超时、429、5xx 或 DNS 解析失败。只看一次请求是否返回 200,无法判断问题在客户端、网络链路、目…

2026/8/15 23:57:53 阅读更多 →
amis6.13版本报错“Unhandled Rejection (Error): [mobx-state-tree] You are trying to ...”的解决方案

amis6.13版本报错“Unhandled Rejection (Error): [mobx-state-tree] You are trying to ...”的解决方案

目录 amis页面报错: 原因: 解决方案 一、patch打补丁 二、参照mapping文件重写reload方法,自行加上catch 三、原型继承,再加上catch amis页面报错: Unhandled Rejection (Error): [mobx-state-tree] You are tryi…

2026/8/15 23:56:53 阅读更多 →

日新闻

内景 空间站内部 中国空间站 太空 内仓

内景 空间站内部 中国空间站 太空 内仓

本项目为前几天收费帮学妹做的一个项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 空间站内部 中国空间站 太空 内仓 地址:本地PC端运行(或Web…

2026/8/15 0:00:30 阅读更多 →
重新定义数据接口:3个突破性场景让通达信数据读取更智能

重新定义数据接口:3个突破性场景让通达信数据读取更智能

重新定义数据接口:3个突破性场景让通达信数据读取更智能 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 当我们面对海量金融数据时,传统的数据获取方式往往让我们陷入困境—…

2026/8/15 0:00:30 阅读更多 →
一文读懂快消WMS怎么选?2026年国内外10大主流WMS品牌盘点

一文读懂快消WMS怎么选?2026年国内外10大主流WMS品牌盘点

快消品(FMCG)是流通速度较快、竞争较为激烈的行业之一。一瓶饮料从出厂到消费者手中,往往只有几十天甚至几天的周转窗口。这决定了快消行业的仓储管理系统(WMS)与制造业、电商行业存在明显区别:它不仅需要管…

2026/8/15 0:02:30 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/15 12:59:14 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/14 13:40:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/14 14:06:45 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/15 2:35:29 阅读更多 →