ES6 之关键字 const


声明:本文转载自https://my.oschina.net/u/3662721/blog/1619740,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

插播一条广告→2021 ByteDance字节跳动内推←各城市、各方向的岗位都有,大量招人!


今天我们来聊下 ES6 的另一个 关键字 const

一、const 关键字

const 是 constant(常量)的缩写,const 和 let 一样也是来声明变量的,但 const 是专门用来声明一个常量的,那么既然是常量,它的值是不能改变的。不像以前用 var 声明的变量 随便改。
可见,碰到const 该改收收你们任性的代码了!

二、谈谈常量

1.不可修改
const Name='张'; Name = 'zhang' // 错误,不可修改常量 Name 
2.只在块级作用域起作用,这点和 let 一样
if (x) {    const Name='张'  } alert(Name) // 错误,在代码块{}外,Name 不起作用  
3.不存在变量提升,必须先声明后使用,也和 let 一样
if (x) {    alert(Name) // 错误,使用前未声明    const Name='张'      }  
4.不可重复声明同一个变量也和 let 一样
var Name='张' ; const Name='张' // 错误 变量已经声明 ,不可重复声明 
5.声明后必须要赋值
const NAME; // 错误 声明后没赋值 

三、const 声明 对象

先看代码
const Person = {     'name':'张' }  Person.name='王'; Person.age=20;  console.log(Person) // 输出 {'name':'王','age':20 } 
不是说好的常量不能修改么。搞事情...
淡定 , 听我说!
这里现讲一个概念:传址赋值
在赋值过程中,我们分为传值赋值和 传址赋值 ,这里就讲讲我们用到的 传址赋值
传址:在赋值过程中,变量存储的实际上是 数据的地址,而不是原始数据 或者对数据的拷贝。
不太明白,没事,先看代码
var person1={'name':'张'} var person2=person1 person2.name='王' console.log(person1) // 输出 {name:'王'} console.log(person2) // 输出 {name:'王'} 
为什么person2 的name 改了以后 person1 的也变了,这就是传址赋值
举个例子:比如 你预约了一个染发师小王,小王沿着你给的地址来了你家 给你把头发染成 奶奶灰色。
过了几天,你觉得他染得不行而且发色 不好看,又预约了小李,小李沿着地址同样来到你家,给你把头发改善了下,并染成 亚麻色。
那么不管谁来你家,按你地址来的见到你 发色 一定是 亚麻色,因为,最后一次 的染发 是亚麻色。
再看代码
// 小王给你染得奶奶灰 var wang={hair:'奶奶灰'}  // 过了几天,你让小李来,并告诉了他地址 var li=wang  // 小李给你染得亚麻色 var li={hair:'亚麻色'}  // 那么不管谁来你家,你的发色一定是亚麻色 console.log(wang) // 输出 {'hair':'亚麻色'} console.log(li) //  输出 {'hair':'亚麻色'} 
翻到开始的那个代码,结构都一样,应该明白了吧。
回到我们的关键字 const ,用 const 来声明 一个对象类型的常量,就是传址赋值。而不可修改的是 对象在内存中的地址,而不是对象本身(不变的你家的地址而不是你的发色)
所以上面那段代码console 的时候能正常输出了
var person1={'name':'张'} var person2=person1 person2.name='王' console.log(person1) // 正常输出 {name:'王'} console.log(person2) // 正常输出 {name:'王'} 
但是,如果这样写就要报错了
var person1={'name':'张'} person1={} // 错误,给常量person1 重新赋值(即改变你家地址)  

小结:

const是用于声明一个常量,并必须赋值,声明后不可修改,和 let 一样,只在块级作用域 起作用,不可重复声明同一个变量,不会有变量提升的情况,声明引用类型的常量时,要注意传址赋值。

ok!

本文发表于2018年02月07日 18:31
(c)注:本文转载自https://my.oschina.net/u/3662721/blog/1619740,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 887 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1