也许是习惯,也许是为了一致性,但是为什么var
在模块的根范围内使用这么多(许多代码示例都表明了这一点)?真的有必要吗?我的意思是模块是根范围,所以无论你声明一个变量有还是没有var
,你在这两种情况下都将它附加到同一个对象,对吗?你不会弄乱任何命名空间,不是吗?
qs = require('querystring'); // looks better than
var qs = require('querystring'); // right?
也许是习惯,也许是为了一致性,但是为什么var
在模块的根范围内使用这么多(许多代码示例都表明了这一点)?真的有必要吗?我的意思是模块是根范围,所以无论你声明一个变量有还是没有var
,你在这两种情况下都将它附加到同一个对象,对吗?你不会弄乱任何命名空间,不是吗?
qs = require('querystring'); // looks better than
var qs = require('querystring'); // right?
原因是 Common JS 模块不仅用于 node.js,还用于各种其他环境。
许多 Common JS 模块也可以在浏览器中使用。每个模块都有自己的函数包装器,以将其与其他模块隔离。在这种情况下,有必要使用var
,以免意外泄漏到全局范围内。
话虽如此,大多数开发人员更喜欢var
在他们的代码中显式使用,原因如下:
var
,我经常发现自己var
在 C/C++ 中使用声明,然后让编译器对我哭泣。var
不能被删除delete
。有时我会故意省略var
全局变量,以便稍后删除它们并以“忍者模式”运行。