您的位置:首页 > 其它

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

2017-03-09 23:36 204 查看
之前用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赋新值(新地址)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: