在nodejs / commonjs模块的根作用域中声明对象 – var或不是var?

也许这是习惯,也许是为了保持一致性,但是为什么var在模块的根范围中使用得太多(许多代码示例显示它)? 这真的有必要吗? 我的意思是模块是根作用域,所以无论你是否声明一个variables有或没有var ,你把它连接到同一个对象在这两种情况下,对不对? 你没有混淆任何命名空间,不是吗?

 qs = require('querystring'); // looks better than var qs = require('querystring'); // right? 

原因是Common JS模块不仅在node.js中使用,而且在各种其他环境中使用。

许多常见的JS模块也可以在浏览器中使用。 每个模块都有自己的函数包装器来将其与其他模块隔离。 在这种情况下,有必要使用var以免意外泄漏到全局范围中。

这就是说大多数开发人员更喜欢在代码中明确使用var ,原因如下:

  1. 这是一个很好的编程习惯。 认真地说,编程是关于实践的。 我很习惯使用var声明variables,我经常发现自己在C / C ++中使用var声明,然后让编译器对我哭泣。
  2. 使用var声明的variables不能使用delete操作符delete 。 有时我会故意忽略全局variables中的var ,以便我可以稍后删除它们并以“忍者模式”运行。