2017-10-04 188 views
3

这可能是一个愚蠢的问题,但我想看看是否有任何最佳实践来分配CONST或LET变量。我了解CONST变量一旦声明就不能重新分配,但我注意到通过将一个对象分配给一个CONST变量,可以更新该对象的内容。Javascript:将对象赋值给const变量vs让变量

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

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

这会被认为是不好的做法?如果没有,为什么不使用LET变量?

+0

'这会被认为是不好的做法'不,...'为什么不使用LET variable'因为你不重新分配一个新的对象给人,你修改一个对象的属性。 – Keith

+0

'const myHome = new House();'是我住的'House'对象。如果'myHouse'是一个const,那只会阻止我搬到新房子;它并不阻止我在我的'家'里面敲墙壁,打开窗户或移动家具。 – apsillers

回答

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