实现单例时应该使用 let 还是 var?

Should I use let or var when implementing a singleton?

我理解两者之间的区别(let 将引用锁定在块内,而 var 声明了一个可在范围内访问的变量)。

但是考虑到基于模块的单例模式:

var singleton = null;

module.exports = () => singleton ? singleton : singleton = newInstance();

我应该用 let 还是 var 声明单例变量?有什么不同吗,考虑到 CommonJS 模块 imports/exports?

当我们谈论单例实现时,let 或 var 没有区别。我已经在我的 IDE 中查看过了。考虑到使用“let”是更好的做法,我建议您完全使用“let”关键字。

您已经考虑改用 const 了吗?

我一直使用 const,从来没有遇到过问题,因为您永远不会重新访问整个对象。

如果要在 'var' 或 'let' 之间进行选择,最好的选择是 'let',因为其中一个区别是 'let' 消除了变量容易出错的行为吊装,您可以阅读此规范:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let。 但是你应该考虑只使用 const 作为你的默认变量,因为大多数错误都涉及意外的状态变化,你可以用来保证变量值和状态的一切都应该用来避免这种最常见的问题。