本文转载自微信公众号《JS日报》,作者慧慧。转载本文请联系JS每日一问公众号。1.这是什么?在浏览器JavaScript中,window通常是全局对象,而Nodejs中的全局对象是全局的。在NodeJS中,不可能在最外层定义一个变量,因为所有的用户代码都属于当前模块。它仅在当前模块中可用,但可以通过使用导出对象将其传递到模块外部。因此,在NodeJS中,用var声明的变量不是全局变量,只在当前模块生效。像上面的global全局对象在全局范围内,任何全局变量、函数或对象都是对象的一个??属性值。2.全局对象有哪些分为两类:真正的全局对象模块级全局变量真正的全局对象全局对象的:Class:BufferprocessconsoleclearInterval,setIntervalclearTimeout,setTimeoutglobalClass:Buffer可以处理二进制和非Unicode编码数据。原始数据存储在Buffer类实例化中。Buffer类似于一个整数数组,在V8堆原始存储空间中为其分配内存。Buffer实例一旦创建,其大小就无法更改。进程对象提供有关当前进程的信息和控制。包含在执行一个node程序的过程中,如果需要传递参数,我们想要获取这个参数需要在进程内置对象中启动进程:nodeindex.js参数1参数2参数3index.js文件如下如下:process.argv.forEach((val,index)=>{console.log(`${index}:${val}`);});输出结果如下:/usr/local/bin/node/Users/mjr/work/node/process-args.js参数1参数2参数3除了这个之外,还包含了一些其他的信息,比如版本,运行system等,console用于打印stdout和stderr最常用的输入内容:console.logconsole.log("hello");清除控制台:console.clearconsole.clearprint函数调用堆栈:console.tracefunctiontest(){demo();}functiondemo(){foo();}functionfoo(){console.trace();}test();clearInterval,setInterval设置定时器和清除定时器setInterval(callback,delay[,...args])回调每延迟毫秒重复执行clearInterval是取消定时器对应的方法,delay[,...args])回调在delay毫秒后执行一次。clearTimeout是取消延迟器的方法。全局全局命名空间对象。墙上提到的process,console,setTimeout等都是放在全局的console.log(process===global.process)//真正的模块级全局对象这些全局对象是模块中的变量,但是每个module有它们,它们看起来像全局变量,不能在命令交互中使用,包括:__dirname__filenameexportsmodulerequire__dirname获取当前文件所在路径,不包括Runnodeexample.jsfrom/Users/mjr后面的文件名:console.log(__dirname);//打印:/Users/mjr__filename获取路径当前文件所在和文件名,包括以下文件名Runnodeexample.jsfrom/Users/mjr:console.log(__filename);//print:/Users/mjr/example.jsexportsmodule.exports用于指定模块导出的内容,即可以通过require()访问的内容exports.name=name;exports.age=age;exports.sayHello=sayHello;module指的是当前模块,module.exports用于指定一个模块导出的内容,即通过require()访问的Contentrequire用于导入模块,JSON或者本地文件可以从node_modules导入模块。可以使用相对路径导入本地模块或JSON文件,路径会根据__dirname定义的目录名或当前工作目录进行处理参考http://nodejs.cn/api/globals.htmlhttps://vue3js.cn/采访
