当前位置: 首页 > 新闻动态 > 开发知识 >

js的const关键词定义对象{},但是内容还能赋值

作者:湖北纯量网络 阅读: 发布时间:2024-07-05 11:42

摘要:在JavaScript中,const关键字用于声明一个常量。一旦使用const声明了一个变量并用一个值对其进行了初始化,那么这个变量的值就不能被改变了。然而,这并不意味着const声明的变量就完全...

在JavaScript中,const关键字用于声明一个常量。一旦使用const声明了一个变量并用一个值对其进行了初始化,那么这个变量的值就不能被改变了。然而,这并不意味着const声明的变量就完全不能改变。特别是当我们用const来声明一个对象时,虽然我们不能重新为这个const变量赋值一个新的对象,但我们仍然可以修改这个对象的属性值。
js的const关键词定义对象{},但是内容还能赋值

举个例子,我们来看下面这段代码:

```javascript

const obj = { a: 10, b: 20 };

obj.a = 30; // 正确

obj.b = 40; // 正确

console.log(obj); // 输出:{ a: 30, b: 40 }

obj = { c: 50, d: 60 }; // 错误,TypeError: Assignment to constant variable.

console.log(obj);

```

在上面的代码中,我们首先使用const关键字声明了一个名为obj的对象,并为其初始化了一些属性和值。然后,我们尝试修改这个对象的一些属性值,这是完全可以的。但是,当我们试图将一个新的对象赋值给这个const变量时,就会抛出一个TypeError。

为什么会这样呢?这是因为JavaScript中的const关键字只是阻止了你直接更改引用类型变量的引用地址,也就是说你不能将新的引用类型的值赋给已经使用const声明过的变量。但是,它并没有阻止你修改这个变量所引用的对象的内部状态,也就是它的属性值。

如果我们真的想要创建一个不能被修改的对象,我们应该怎么做呢?我们可以使用Object.freeze()方法,这个方法可以冻结一个对象,使得不能再添加新的属性、删除已有属性以及修改属性的值和属性描述符。

例如:

```javascript

const obj = Object.freeze({ a: 10, b: 20 });

obj.a = 30; // 无效

obj.b = 40; // 无效

console.log(obj); // 输出:{ a: 10, b: 20 }

```

在这里,我们先创建了一个新对象,然后立即调用Object.freeze()方法将它冻结,然后再用const关键字声明并初始化变量obj。现在,无论我们怎么尝试修改obj的属性,都不会有任何效果。

通过这样的方式,我们就可以确保使用const关键字声明的对象不会被修改,从而实现真正的常量定义。

  • 原标题:js的const关键词定义对象{},但是内容还能赋值

  • 本文由湖北纯量网络小编,整理排版发布,转载请注明出处。部分文章图片来源于网络,如有侵权,请与纯量网络联系删除。
  • 相关推荐

    微信二维码

    CLWL6868

    长按复制微信号,添加好友

    微信联系

    在线咨询

    点击这里给我发消息QQ客服专员

    点击这里给我发消息电话客服专员

    在线咨询

    免费通话


    24h咨询☎️:132-5572-7217


    🔺🔺 24小时客服热线电话 🔺🔺

    免费通话
    返回顶部