美文网首页
const修改引用类型

const修改引用类型

作者: _hider | 来源:发表于2019-08-19 22:10 被阅读0次

    const是用来定义常量的,而且定义的时候必须初始化,且定义后不可以修改。这个想必都是常识了,但是有点需要注意的是声明引用类型和基本类型有点不同。用const声明的基本类型一定是无法改变的,否则报错,但是对于引用类型,则稍有不同。废话不多说,直接上代码:

    //修改基本类型
    const str = 'hello';
    str = 'hello world';
    console.log(str); //Uncaught TypeError: Assignment to constant variable.
    
    //修改引用类型
    const arr = [1,2,3];
    arr.push(4);
    console.log(arr);//[1,2,3,4]
    

    第一次遇到的是我看控制台的输出都懵逼了,不是说好的会报错吗?不是说const声明的是无法修改的吗?好吧,于是去查了下文档。查自 ECMAScript 6 入门

    const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针,const只能保证这个指针是固定的(即总是指向另一个固定的地址),至于它指向的数据结构是不是可变的,就完全不能控制了。因此,将一个对象声明为常量必须非常小心。

    相关文章

      网友评论

          本文标题:const修改引用类型

          本文链接:https://www.haomeiwen.com/subject/picysctx.html