• ES6基础(2)-const


    1、const声明的是常量,在声明的时候就必须赋值,否则报错

    const a;   #报错:missing initializer in const declaration
    const a=1;  #正常运行

    2、一旦声明常量就不可再改变;

    const  name = "小红”
    const  name = "小明“
    #报错:常量不能被修改

    3、常量为引用类型的时候,可以修改该引用类型

    const xiaoming = {
      age = 14;
      name = "xiaoming"    
    }
    console.log(xiaoming);
    xiaoming.age = 22;
    console.log(xiaoming);   #成功修改
    xiaoming = {}        #报错
    

     原因:const的常量的value是引用类型的时候,value是引用类型的内存地址,而非实际内容;只要保证引用地址没有改变就不会报错

    4、const的特性

    • let声明的变量只在当前(块级)作用域内有效;
    • let声明的变量不能被重复声明;
    • 不存在变量提升;

    4、怎么解决引用类型(对象&数组)的常量可以被修改的问题:object.freeze()    #冻结引用类型,此时常量为引用类型的话,也不会再修改了

    const xiaoming = {
      age = 14;
      name = "xiaoming"    
    }
    xiaoming.freeze();
    console.log(xiaoming);    #age = 14
    xiaoming.age = 22;
    console.log(xiaoming);      #age = 14(因为被冻结,所以修改不生效)

    5、ES6之前怎么声明常量

    1、假装是常量:
    var xiaoming = "#ff0000"
    
    在对象上添加属性:
    Object.defineProperty = {obj,’属性名‘,属性描述}
    例如:
    var CST={};
    Object.defineProperty = {CST, 'BASE_NAME', {
        value: 'xiaoming';    #属性的值
        writeable:false;      #属性不能被修改了  
    }  
    Object.seal(CST);  #包裹常量后,常量若为引用类型的话,此时无法再扩展,但可以修改当前属性值,相当于ES6中的freeze()的一半的功能;

      

  • 相关阅读:
    类型初始值设定项引发异常的解决方法
    sql修改排序规则,区分大小
    SQLServer查询所有子节点
    Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" and "SQL_L及由于排序规则不同导致查询结果为空的问题
    SQLServer跨库查询--分布式查询
    DataTable对象的操作问题
    .Net插入大批量数据
    SQL修改字段类型
    数据抓包分析
    Qss 皮肤
  • 原文地址:https://www.cnblogs.com/shary-blue/p/13991894.html
Copyright © 2020-2023  润新知