二,ES6中新增const关键字的使用方法

    xiaoxiao2021-03-25  76

    之前用var声明变量,变量想怎么改就怎么改,这里const关键字也是声明变量的,不过声明的是常量,常量就是固定的一个值,不能改变,

    例如:const name=“唐僧”;

    name="老沙"//  报错 因为它要更改常量name

    只在块级作用于起作用,和let关键字一样

    if(true){

    const age=20;

    }

    alert(age)//报错 age在代码块外不起作用

    不存在变量提升,但必须提前声明,和let一样

    if(true){

    alert(age);  //报错  使用时 未声明

    const age=20;

    }

    不可重复声明同一个变量

    var age=20;

    const age=20;//报错  因为变量age已经存在

    声明后要赋值,没有赋值要报错

    const age=20;

    const name;//报错。因为没有赋值;

    常量是对象呢?

    const obj={"name":"abc"};

       obj.name="老沙“;

       obj.age=20;

       console.log(obj)   //obj{name:"老沙“,age:20}

    是不是有点奇怪。不是说const关键字定义的变量不能改变吗?怎么在这里改变了?而且还没有报错?不用担心,暂且一起往下看:

    这个时候,我们先引入一个概念:在赋值过程中,我们可以分为传值赋值和传址赋值。这里我们用到了传址赋值,什么叫传址赋值?

    传址:在赋值过程中,变量实际上存储的是数据的地址(对数据的引用),而不是原始数据或者数据的拷贝

    var student1 = {"name":"张三"};

        var student2 = student1;

        student2.name = "李四";

        console.log(student1);

        //结果:输出 {name: "李四"}

        console.log(student2);

        //结果:输出 {name: "李四"}

     为什么student2的name改成了“李四”,student1的那么也变成了“李四”呢?这就是传址赋值!

    如果这样写的话就会报错:

     const Person = {"name":"张三"};

        Person.age = 20;

        Person = {}; 

        //错误,企图给常量Person赋新值(新地址)

    转载请注明原文地址: https://ju.6miu.com/read-17565.html

    最新回复(0)