一、global

  全局对象,我认为相当于浏览器中的window

  像下面要说的process 以及 setTImeout了等等,都是挂在它上面的。默认可以不写直接调用process ,setTImeout。

  不通过var声明(浏览器如果没有var声明默认会提升变量到window上)或者定义在global变量上的都是全局变量。全局变量作用域直到进程退出才能释放。

二、process对象上的对象和方法

  1.process.env

  一般情况下我们会在此对象上赋值

    例如  process.env.PORT 来通过命令行或者config配置端口。(命令行设置我知道的 cross-env模块)

    process.env.NODE_ENV 来设置是开发环境还是生产环境

    这些模块默认本身是undefined,只是大家都这么潜规则,方便大家看别人代码一看便知

  2.process.memoryUsage()

    打印:{ rss: 31432704, heapTotal: 18748496, heapUsed: 11408320 }

    rss: 进程的常驻内存部分

    heapTotal和heapUsed 都是V8堆内存信息

    heapTotal 是堆中总共申请的内存量

    heapUsed  表示堆内存中目前使用的内存量

    单位 都是字节

  3.process.nextTick(func)

    这个东东其实与setTimeout(func,0)作用一样的,表示立即执行,但是他们有个共同特点就是“异步”

    

process.nextTIce(function(){
   console.log("延迟执行"); 
})
console.log("正常执行");

打印: 正常执行
      延迟执行

    因为process.nextTIck 调用会将回调函数插入队列,在下一轮Tick时执行。

    与setTImeout比较就是性能高,但是不能取代,因为setTimeout可以规定多少毫秒后执行,虽然有些许误差存在

  3.process.setImmediate(func)

    这个函数与上面异曲同工,只是它属于check观察者,而nextTIck属于idle观察者

    先后顺序: 在每一次tick循环idle观察者优先于I/O观察者,I/O观察者优先于check观察者

    总结: 先同步执行,然后异步,异步执行遵循上面的先后顺序

 

当然这里面还有很多东东,后续会持续总结。。。