可能是习惯,也可能是为了一致性,但为什么 var
在模块的根范围内使用得如此之多(许多代码示例都表明了这一点)?真的有必要吗?我的意思是该模块是根作用域,所以无论您声明的变量是否带有 var
,您在两种情况下都将它附加到同一个对象,对吗?您没有弄乱任何 namespace ,不是吗?
qs = require('querystring'); // looks better than
var qs = require('querystring'); // right?
最佳答案
原因是 Common JS 模块不仅在 node.js 中使用,而且在其他各种环境中使用。
许多 Common JS 模块也可以在浏览器中使用。每个模块都有自己的函数包装器,以将其与其他模块隔离开来。在这种情况下,有必要使用 var
以免意外泄漏到全局范围内。
话虽这么说,大多数开发人员更愿意在他们的代码中显式使用 var
,原因如下:
- 这是一个很好的编程习惯。说真的,编程就是练习。我习惯于使用
var
声明变量,以至于我经常发现自己在 C/C++ 中使用var
声明,然后让编译器对我哭诉。 - 不能使用
delete
运算符删除使用var
声明的变量。有时我会故意在全局变量中省略var
,以便稍后删除它们并以“忍者模式”运行。
关于javascript - 在 nodejs/commonjs 模块的根范围内声明对象 - 到 var 还是不到 var?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15446022/