javascript - 在 nodejs/commonjs 模块的根范围内声明对象 - 到 var 还是不到 var?

标签 javascript node.js commonjs

可能是习惯,也可能是为了一致性,但为什么 var 在模块的根范围内使用得如此之多(许多代码示例都表明了这一点)?真的有必要吗?我的意思是该模块是根作用域,所以无论您声明的变量是否带有 var,您在两种情况下都将它附加到同一个对象,对吗?您没有弄乱任何 namespace ,不是吗?

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

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

最佳答案

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

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

话虽这么说,大多数开发人员更愿意在他们的代码中显式使用 var,原因如下:

  1. 这是一个很好的编程习惯。说真的,编程就是练习。我习惯于使用 var 声明变量,以至于我经常发现自己在 C/C++ 中使用 var 声明,然后让编译器对我哭诉。
  2. 不能使用delete 运算符删除使用var 声明的变量。有时我会故意在全局变量中省略var,以便稍后删除它们并以“忍者模式”运行。

关于javascript - 在 nodejs/commonjs 模块的根范围内声明对象 - 到 var 还是不到 var?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15446022/

相关文章:

javascript - 带有 PhoneGap + Angular 的 Windows Phone 7 和 8 在引导过程中死机

javascript - 检查数据库是否有更改,然后重新加载页面

node.js - 如何在Service构造函数中对Controller和模拟@InjectModel进行单元测试

mysql - 如何返回Node.js mysql查询连接的响应

javascript - React 库如何直接请求其源库?

javascript - 从 CommonJS TypeScript 导入 es 模块文件

node.js - 用 Jest 重置单个模块

javascript - HTML5 `favorite` 离线缓存

javascript - 使用通过 Jquery 创建的对象注册现有的事件处理程序

javascript - 我如何 stub fs 回调的注入(inject)参数以消除在测试套件中接触文件系统的需要?