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

jam*_*han 4 javascript constants

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

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

person.name = "Kim"
console.log(person.name) => //"Kim"
Run Code Online (Sandbox Code Playgroud)

这会被视为不好的做法吗?如果不是,为什么不使用 LET 变量呢?

MrC*_*ode 6

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

ES6const使绑定不可变,而不是值。

在 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
Run Code Online (Sandbox Code Playgroud)