二,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赋新值(新地址)
例如: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赋新值(新地址)
相关文章推荐
- 一,ES6新增let关键字使用方法
- c语言程序的存储区域与const关键字的使用方法
- c++中的 关键字const 使用方法及说明
- c语言程序的存储区域与const关键字的使用方法
- c语言程序的存储区域与const关键字的使用方法
- C语言中const关键字使用方法及使用场景
- php类中的$this,static,final,const,self这几个关键字使用方法
- c语言程序的存储区域与const关键字的使用方法
- c语言程序的存储区域与const关键字的使用方法
- php面向对象类中的$this,static,final,const,self及双冒号 :: 这几个关键字使用方法。
- php类中的$this,static,final,const,self这几个关键字使用方法
- c语言程序的存储区域与const关键字的使用方法
- C++中const关键字的使用方法,烦透了一遍一遍的搜,总结一下,加深印象!!!
- ES6 — 新增关键字let、const
- c语言程序的存储区域与const关键字的使用方法
- c语言程序的存储区域与const关键字的使用方法
- const关键字的使用
- Java多线程初学者指南(10):使用Synchronized关键字同步类方法
- const使用方法探讨
- SQL中条件和比较关键字Case的使用方法(case的结果就是得到了一个值)