这可能是一个愚蠢的问题,但我想知道在分配给CONST或LET变量的方面是否有任何最佳实践。我知道CONST变量一旦声明就不能重新分配,但我注意到通过将一个对象分配给一个CONST变量,你可以更新该对象的内容。
const person = {
name: "John"
}
console.log(person.name) => //"John"
person.name = "Kim"
console.log(person.name) => //"Kim"
这会被视为不良做法吗?如果没有,为什么不使用LET变量?
答案 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