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