常见对象
全局作用域
在浏览器环境下,使用var所定义的变量会成为全局对象(window)的一个属性。
定义的变量属于 window 对象的一个属性,定义的方法属于 widnow 对象的一个方法。
在 Node 环境下,不存在 window 对象,取而代之的是 global 对象。使用var所定义的变量同样会成为 global 对象的一个属性,如下:
```js
var i = 5; undefined console.log(i); 5 undefined console.log(global.i); 5 undefined ```
理解“全局可用”
在 Node 中,提供的一些全局可用的变量,函数和对象。这里所谓的全局就是指不需要进行模块加载,可以直接使用的,其中包括全局作用域的函数和对象。这些函数和对象都可以看作是 global 对象的属性或者方法。
```js
console.log(console === global.console); true undefined ```
除此之外,还包含了另一种不在全局作用域,但是在每个模块作用域中都存在的变量、函数和对象。它们不是global 对象的属性或者方法。
js console.log(__dirname); // /Users/Jie/Desktop/NPM_test console.log(global.__dirname); // undefined console.log(__dirname === global.__dirname); // false
用一张图形来说明,如下:
全局对象
在 Node 中最顶级的对象就是 global 对象,其次 global 对象的一些属性对应的值也是对象,并且这些对象是全局可用的,所以这样的对象我们也称之为全局对象。这里介绍几个常见的全局对象。
global 对象
最顶层的对象,诸如 console,process 等对象都是该对象的一个属性。有几个比较常用的全局方法,在浏览器环境下也是存在的,如下:
setTimeout(cb, ms): 在指定的毫秒(ms)数后执行指定函数(cb)。setTimeout 只执行一次指定函数。setTimeout 返回值可以作为 clearTimeout 的参数。
clearTimeout(t): 用于停止一个之前通过 setTimeout 创建的定时器。参数 t 是通过 setTimeout 函数创建的计算器。
setInterval(cb, ms): setInterval 和 setTimeout 类似,不过 setInterval 会在每 ms 毫秒后(并非精确的 ms 毫秒后)执行一次 cb。setInterval 返回值可以作为 clearInterval 的参数。
clearInterval(t): 用于停止 setInterval 定时器,这样回调函数就不会被执行了。
console 对象
console 是 global 全局对象的一个属性,其自身也是一个对象,常见的方法如下:
console.info([data][, ...]): 该命令的作用是返回信息性消息,这个命令与 console.log 差别并不大,除了在 chrome 中只会输出文字外,其余的会显示一个蓝色的惊叹号。
console.error([data][, ...]): 输出错误消息的。控制台在出现错误时会显示是红色的叉子。
console.warn([data][, ...]): 输出警告消息。控制台出现有黄色的惊叹号。
console.dir(obj[, options]): 用来对一个对象进行检查(inspect),并以易于阅读和打印的格式显示。
console.time(label): 输出时间,表示计时开始。
console.timeEnd(label): 结束时间,表示计时结束。
console.trace(message[, ...]): 当前执行的代码在堆栈中的调用路径,这个测试函数运行很有帮助,只要给想测试的函数里面加入console.trace()就行了。
console.assert(value[, message][, ...]): 用于判断某个表达式或变量是否为真,接手两个参 数,第一个参数是表达式,第二个参数是字符串。 只有当第一个参数为 false,才会输出第二个参数, 否则不会有任何结果。
注:有关 console 对象更多说明,可参见博文:https://segmentfault.com/a/1190000000481884
process 对象
在 Node.js 中提供了 process 模块来处理与进程相关的内容。进程可以看作是一个正在运行的应用程序。例如前面我们搭建的 Node.js 服务器,启动之后就是一个进程。
使用 process 模块可以截获进程的异常、退出等事件,也可以获取进程的当前目录、环境变量、内存占用等信息,还可以执行进程退出、工作目录切换等操作。
process.cwd(): 查看应用程序当前目录。
js console.log(process.cwd()); // /Users/Jie/Desktop
process.chdir("目录"): 改变应用程序目录。
js console.log(process.cwd()); // /Users/Jie/Desktop process.chdir("../") console.log(process.cwd()); // /Users/Jie
process.stdout: 标准输出流,其中 console.log()方法就是在此基础上进行的一层封装。
js process.stdout.write('Hello'); console.log('World'); // HelloWorld
process.stderr: 标准错误流,和 stdout 的作用差不多,不同的是它是用来打印错误信息的,我们可以通过它来捕获错误信息。
js process.stderr.write('错误内容1'); console.error('错误内容2'); // 错误内容1错误内容2
process.stdin: 标准输入流,可以通过注册事件的方式来获取输入的内容。
js process.stdin.on('readable', function () { let chunk = process.stdin.read(); if (chunk !== null) { process.stdout.write('你输入的内容为: ' + chunk); } });
process.exit(code): 退出程序。
process.stdxxx.setEncoding(编码): 设置编码。在我们的输入输出的内容中有中文的时候,可能会有乱码的问题,这是因为编码不同造成的。在这种情况下需要为流设置编码。
js process.stdin.setEncoding(编码); process.stdout.setEncoding(编码); process.stderr.setEncoding(编码);
各模块通用变量
上面有讲过,所谓各模块通用变量、方法或者对象,是指各个模块都有,但是不属于 global 对象的属性或者方法。这里简单介绍几个这样的变量。
__dirname表示当前文件所在的目录,__filename表示当前正在执行的脚本的文件名。如下:
js console.log(__dirname); // /Users/Jie/Desktop/NPM_test console.log(__filename); //

浙公网安备 33010602011771号