在nodejs/commonjs模块的根作用域中声明对象——用var还是不用var

declaring objects in root scope of nodejs/commonjs modules - to var or not to var?

本文关键字:var 对象 声明 commonjs nodejs 模块 作用域      更新时间:2023-09-26

也许这是习惯,或者也许是为了一致性,但为什么var在模块的根范围内使用这么多(许多代码示例显示它)?真的有必要吗?我的意思是,模块是根作用域所以无论你声明一个变量是否有var,在两种情况下,你都将它附加到同一个对象上,对吧?你没有弄乱任何名称空间吧?

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

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

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

也就是说,大多数开发人员更喜欢在他们的代码中显式地使用var,原因如下:

    这是一个很好的编程实践。说真的,编程就是实践。我已经习惯使用var来声明变量了,所以我经常发现自己在C/c++中使用var声明,然后编译器对我大喊大叫。
  1. 使用var声明的变量不能使用delete操作符删除。有时我故意在全局变量中省略var,以便我可以稍后删除它们并在"忍者模式"下操作。