2017-10-04 185 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