【JS】const 声明对象或者数组可以改变吗

const 声明对象或者数组可以改变吗

tina666发布于 2 月 2 日

今天逛帖子,突然遇到这个问题,我第一反应是不能改变,如果要改变,为什么还用const定义,然后在浏览器控制台试试结果。
【JS】const 声明对象或者数组可以改变吗

耶,这是什么操作啊, 然后在时候定义一个基本类型,确实是预料中的结果
【JS】const 声明对象或者数组可以改变吗

那为什么const 定义的对象和数组可以改变它的值呢?

因为对象和数组是引用类型,a中保存的仅是数组的指针,这就意味着,const仅保证指针不发生改变,修改数组的值不会改变对象的指针,所以是被允许的。也就是说const定义的引用类型只要指针不发生改变,其他的不论如何改变都是允许的。

我们试着修改一下指针,让a指向一个新数组,结果如下图:
【JS】const 声明对象或者数组可以改变吗

即使对象的内容没发生改变,指针改变也是不允许的。
【JS】const 声明对象或者数组可以改变吗

好了,算爬出了一个坑,记录下

面试javascript

阅读 54发布于 2 月 2 日

本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议

avatar

tina666

别回头,别人随时有可能赶上你

123 声望

3 粉丝

0 条评论

得票时间

avatar

tina666

别回头,别人随时有可能赶上你

123 声望

3 粉丝

宣传栏

今天逛帖子,突然遇到这个问题,我第一反应是不能改变,如果要改变,为什么还用const定义,然后在浏览器控制台试试结果。
【JS】const 声明对象或者数组可以改变吗

耶,这是什么操作啊, 然后在时候定义一个基本类型,确实是预料中的结果
【JS】const 声明对象或者数组可以改变吗

那为什么const 定义的对象和数组可以改变它的值呢?

因为对象和数组是引用类型,a中保存的仅是数组的指针,这就意味着,const仅保证指针不发生改变,修改数组的值不会改变对象的指针,所以是被允许的。也就是说const定义的引用类型只要指针不发生改变,其他的不论如何改变都是允许的。

我们试着修改一下指针,让a指向一个新数组,结果如下图:
【JS】const 声明对象或者数组可以改变吗

即使对象的内容没发生改变,指针改变也是不允许的。
【JS】const 声明对象或者数组可以改变吗

好了,算爬出了一个坑,记录下

以上是 【JS】const 声明对象或者数组可以改变吗 的全部内容, 来源链接: utcz.com/a/112981.html

回到顶部