Object.freeze()和const 之间的区别在于,前者可以防止可变性, 而后者则不能防止可变性。为了更好地理解,让我们单独讨论它们。
const 行为与let相同。一旦使用const 定义了任何变量,就无法重新分配它。由Const 声明的变量是块范围的,而不是var定义的函数范围的。
const 关键字的主要缺点是它不能防止对象的可变性。即使使用const定义了该对象,也可以更改其属性。这称为可变性。有一个概括,使用const分配的任何变量都不能再次重新分配。但是,当使用const定义对象时,可以更改其属性。在那种情况下,最好避免使用const来防止变异。
在下面的示例中,属性“ country”的值最初是“印度”。但是后来,即使使用const分配了变量,该值仍更改为England。
<html> <body> <script> const person = { "name" : "Suresh", "Country" : "India", "Designation" : "Mayor" } person.Country = "England" document.write(person.Country); </script> </body> </html>
England
这种方法提供了不变性。一旦冻结了任何对象,就无法更改其属性。
在下文中,即使将属性“国家”的值从“印度”更改为“英国”,由于不可变性 ,值“印度”仍保留其位置。
<html> <body> <script> const person = { "name" : "Suresh", "Country" : "India", "Designation" : "Mayor" } Object.freeze(person); person.Country = "England" document.write(person.Country); </script> </body> </html>
India