如果它是一个不可变对象,那么我毫不怀疑将它声明为const。 但在这种情况下,它只是对象的const引用,而对象在代码中稍后被修改。
const styles = {};
...
styles.width = rect.width + 'px';
我担心阅读此代码的开发人员会感到困惑。
感觉let
更适合变异的对象。
答案 0 :(得分:2)
这可能是一个你无法得到最终答案的问题,因为它是基于意见的。
一些历史背景可以帮助理解令人困惑的const
如何成为第一位:
Allan Wirfs-Brock, the former editor of the EcmaScript spec, himself said:
在稍微不同(也许更好)的Universe中,ECMAScript
const
声明将被命名为let
并引入SSA绑定。
并问,为什么情况并非如此,he responded:
让/ const是来自ES4提案和Moz JS1.7
的结转TC39从未认真研究过命名备选方案
所以你可以说const
有点用词不当,因为它不会做那些不熟悉它的人可能会做的事情。
由于const
按照它的方式工作,并且几乎肯定不会改变,我仍会使用const
定义您的对象。
这可能会帮助那些不熟悉const
工作方式的人更好地理解。
也许在第一次出现const
时添加一个带有对象的注释可能会有所帮助,如下所示:
// Important: 'const' only ensures that 'styles' always references the same object,
// it does not render it immutable
const styles = {};
但意见可能会有所不同。