node.js学习笔记(13) global objects

简介:

Global objects可简单地译为全局对象,但它又不全是全局对象。Global objects 其实包括真正的全局对象和模块级的全局对象。

来看看它们分别有哪些吧。


真正的全局对象

  • Class: Buffer
  • setInterval(cb, ms)
  • setTimeout(cb, ms)
  • clearInterval(t)
  • clearTimeout(t)
  • console
  • global
  • process


模块级的全局变量

  • __dirname
  • __filename
  • require()
  • module
  • exports
其实我们前面的笔记中已经用到过上面的大多数global objects,翻一下前面的笔记我们可以发现他们有一个共同点--使用的时候都不需要require,这正是因为它们是global object。

再说说global:
In browsers, the top-level scope is the global scope. That means that in browsers if you're in the global scope "var something" will define a global variable. In Node.js this is different. The top-level scope is not the global scope; "var something" inside an Node.js module will be local to that module.
在浏览器中,最高作用域是全局作用域。也就是说,在浏览器中的全局作用域下定义了一个变量就是全局变量。但在node.js中不同。最高作用域不是全局作用域,node.js是基于module的,在一个node.js的module中定义一个变量只是一个模块变量,它的作用域仅限于当前模块。
我想global就是用来解决这个问题的吧。

举个栗子
global1.js:
global.test = 'hello global';

global2.js:
var g = require('./global1');

console.log(global.test);

运行效果:
lee@mypc ~/works/nodejs/study13 $ node global2.js 
hello global

上例中global的效果可以实现,我小白地认为这蛮好的吗。
但是,网上的很多前辈说了,global能不用就不用。
也许是因为node.js的文件即module,module的作用域又仅限于当前module,看上例,使用global是还不是得require先。
既然也得require,那定义一个module.exports不也一样吗!
至于污染命名空间的说法,对于还是node.js菜鸟的我来说暂时还无法理解。。。囧。。。



目录
相关文章
|
8月前
|
前端开发
前端学习笔记202306学习笔记第四十九天-学习node的必要性1
前端学习笔记202306学习笔记第四十九天-学习node的必要性1
33 0
|
8月前
|
JavaScript 前端开发
前端学习笔记202305学习笔记第二十四天-node.js安装
前端学习笔记202305学习笔记第二十四天-node.js安装
34 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第四十三天-学习node的必要性1
前端学习笔记202306学习笔记第四十三天-学习node的必要性1
37 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第四十三天-学习node的必要性2
前端学习笔记202306学习笔记第四十三天-学习node的必要性2
46 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第四十三天-安装多个版本的node之2
前端学习笔记202306学习笔记第四十三天-安装多个版本的node之2
52 0
前端学习笔记202306学习笔记第四十三天-安装多个版本的node之2
|
8月前
|
前端开发 JavaScript
前端学习笔记202306学习笔记第四十三天-在node版本中运行js之1
前端学习笔记202306学习笔记第四十三天-在node版本中运行js之1
40 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第四十三天-安装多个版本的node之1
前端学习笔记202306学习笔记第四十三天-安装多个版本的node之1
46 0
|
8月前
|
前端开发 JavaScript
前端学习笔记202306学习笔记第四十三天-在node版本中运行js之2
前端学习笔记202306学习笔记第四十三天-在node版本中运行js之2
48 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第四十三天-安装node之1
前端学习笔记202306学习笔记第四十三天-安装node之1
40 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第四十三天-node提供的全局变量1
前端学习笔记202306学习笔记第四十三天-node提供的全局变量1
38 0