Javascript 我应该在ES2015中将可变数组/对象声明为常量吗?

Javascript 我应该在ES2015中将可变数组/对象声明为常量吗?,javascript,ecmascript-6,Javascript,Ecmascript 6,如果它是一个不可变的对象,那么我将毫无疑问地将它声明为常量。 但在本例中,它只是一个对对象的常量引用,而该对象稍后将在代码中修改 const styles = {}; ... styles.width = rect.width + 'px'; 我担心这会让阅读此代码的开发人员感到困惑。 感觉让更适合突变的对象。这可能是一个你无法得到最终答案的问题,因为它是基于观点的 稍微了解一下历史背景有助于理解令人困惑的const最初是如何产生的: 在一个稍微不同(也许更好)的世界中,ECMAScript

如果它是一个不可变的对象,那么我将毫无疑问地将它声明为常量。 但在本例中,它只是一个对对象的常量引用,而该对象稍后将在代码中修改

const styles = {};
...
styles.width = rect.width + 'px';
我担心这会让阅读此代码的开发人员感到困惑。
感觉让更适合突变的对象。

这可能是一个你无法得到最终答案的问题,因为它是基于观点的

稍微了解一下历史背景有助于理解令人困惑的
const
最初是如何产生的:

在一个稍微不同(也许更好)的世界中,ECMAScript
const
声明将命名为
let
,并引入SSA绑定

问:“为什么不是这样?”

let/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 = {};

不过,意见可能会有所不同。

我想您刚刚回答了您的问题?出于这个目的,我更喜欢
const
,因为变量总是指向同一个对象。但是如果是你的代码,你可以随意使用。如果您在一个团队中工作,并且担心他们可能会感到困惑,那么请为团队编写一份编码标准文档:问题已解决。您不应该通过回答这些问题来鼓励基于意见(离题)的问题。我的错,您有什么建议?结束问题?