博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node.js:全局对象
阅读量:5945 次
发布时间:2019-06-19

本文共 2162 字,大约阅读时间需要 7 分钟。

概要:本篇博客主要介绍了node.js中的全局对象。

  在JavaScript中,通常window是全局对象,而node.js中的全局对象是global,所有全局变量(除了global本身之外)都是global对象的属性。如:consoleprocess

1.全局对象与全局变量

  global最根本的作用是作为全局变量的宿主。满足以下条件:

  ●在最外层定义的变量;

  ● 全局对象的属性;

  ● 隐式定义的变量(未定义直接赋值的变量)。

2.process

  process是一个全局变量,即global对象的属性。它用于描述当前Node.js进程状态的对象,提供了一个与操作系统的简单接口。下面介绍一些process对象的一些最常用的成员方法。

   process.argv:命令行参数数组,第一个元素是node,第二个元素是脚本文件名,从第三个元素开始每个元素是一个运行参数。

console.log(process.argv);

  将以上代码存储为argv.js,通过以下命令行运行:

$ node argv.js 1991 name=byvoid --v "Carbo Kuo"[       'node',    '/home/byvoid/argv.js',    '1991',    'name=byvoid',    '--v',    'Carbo Kuo']

   process.stdout:标准输出流,通常我们使用的console.log()向标准输出打印字符,而process.stdout.write()函数提供了更底层的接口。

   process.stdin:标准输入流,初始时它是被暂停的,想要从标准输入读取数据,你必须恢复流,并手动编写流的事件响应函数。

process.stdin.resume();process.stdin.on('data',function(data){    process.stdout.write('read from console: ' + data.toString());    });

  ▲ process.nextTick(callback):为事件循环设置一项任务,Node.js会在下次事件循环调响应时调用callback。

  Node.js进程只有一个线程,因此在任何时刻都只有一个事件在执行。如果这个事件占用大量的CPU时间。process.nextTick()提供了一个这样的工具,可以把复杂的工作拆散,变成一个较小的事件。

function doSomething(args , callback){    somethingComplicated(args);    callback();}doSomething (function onEnd(){    compute();})

  我们假设,compute()和somethingComplicated()是两个较为耗时的函数,以上的程序在调用doSomething()时会先执行somethingComplicated(),然后立即调用回调函数,在onEnd()中又会执行compute()。下面用process.nextTick()改写上面的程序:

function doSomething(args,callback) {    somethingComplicated(args);    process.nextTick(callback);}doSomething(function onEnd(){    compute();})

  改写的程序会把上面耗时的操作拆分成两个事件,减少每个事件的执行时间,提高事件响应速度。

  警告:不要使用setTimeout(fn,0)代替process.nextTick(callback),前者比后者效率要低得多。除此之外process还展示了process.platform、process.pid、process.execPath、process.memoryUsage()等方法,以及POSIX进程信号响应机制。

3.console

  console用于提供控制台标准输出。

  ▲ console.log( ):向标准输出流打印字符并以换行符结束。console.log()接受若干个参数,如果只有一个参数,则输出这个参数的字符串形式。如果有多个参数,则以类似于C语言printf()命令的格式输出。第一个参数是字符串,如果没有参数,只打印一个换行。

console.log('Hello world');console.log('byvoid%diovyb');console.log('byvoid%diovyb',1991);

运行结果为:

  ▲ console.error( ):与console.log()用法相同,只是向标准错误流输出。

  ▲ console.trace( ):向标准错误流输出当前的调用栈。

console.trace();

运行结果为:

 

转载于:https://www.cnblogs.com/koto/p/5694515.html

你可能感兴趣的文章
docker管理平台 shipyard安装
查看>>
安装django
查看>>
Bootstrap3 栅格系统-简介
查看>>
ADODB类库操作查询数据表
查看>>
【java】File的使用:将字符串写出到本地文件,大小0kb的原因
查看>>
安卓音乐播放器开发实例
查看>>
Junit指定测试执行顺序
查看>>
PHP put提交和获取数据
查看>>
some requirement checks failed
查看>>
存储管理
查看>>
HDU-2089-不要62
查看>>
供应商接口的使用
查看>>
Latex学习笔记0
查看>>
css控制div强制换行
查看>>
ios 底部用定位 fixed。在软件盘出来后,页面元素被顶上去一部分,fixed定位的footer也跑到了上面去。解决方法...
查看>>
HDU1257题解
查看>>
Iterator
查看>>
Spring MVC整合Velocity
查看>>
fiddler+android抓包工具配置使用
查看>>
Spring Data JPA 复杂/多条件组合分页查询
查看>>