Javascript:将对象分配给const变量vs let变量

时间:2017-10-04 16:16:51

标签: javascript const

这可能是一个愚蠢的问题,但我想知道在分配给CONST或LET变量的方面是否有任何最佳实践。我知道CONST变量一旦声明就不能重新分配,但我注意到通过将一个对象分配给一个CONST变量,你可以更新该对象的内容。

const person = {
  name: "John"
}
console.log(person.name) => //"John"

person.name = "Kim"
console.log(person.name) => //"Kim"

这会被视为不良做法吗?如果没有,为什么不使用LET变量?

1 个答案:

答案 0 :(得分:2)

你的例子不是不好的做法,并且完全可以接受,因为person仍然引用同一个对象,即使你已经改变了一个属性。您可以添加,删除或更改属性,person仍然引用您的对象。

ES6 const使绑定不可变,而不是值。

在ES6中,如果您不需要重新绑定,则应使用const,否则请使用let。在您的示例中,您不会重新绑定person,因此它是有效且正确的。

例如,如果您有第二个对象person2并尝试重新绑定person = person2,则会引发类型错误。

如果您希望使对象值不可变,可以使用Object.freeze()这样做:

const person = Object.freeze({
    name: "John"
});
person.name = "Kim";
// quietly fails or throws a type error