JavaScript中Object.freeze()和const之间的主要区别是什么?

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

Object.freeze()

这种方法提供了不变性。一旦冻结了任何对象,就无法更改其属性。 

在下文中,即使将属性“国家”的值从“印度”更改为“英国”,由于不可变性 ,值“印度”仍保留其位置。

示例

<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