Es6 之 你觉得你知道的 const 关键字

es6中新增了一个const。就是用来定义一个常量的。之前其实一直没有把这个放在 心上,以为就是定义一个常量的,很easy,没有什么能够深刻的。es6

问题来了:浏览器

let obj = {'num1' : 20, 'num2' : 30}  
const obj1 = obj  
const num = obj.num1   
obj.num1 = 40

那么,试问这时候若是输出obj1 和 num的值,分别是多少呢?让咱们在谷歌浏览器中试验一下spa

clipboard.png

答案很显而易见了。在obj的num1属性值改变了之后,obj1的值是随着对象的改变而改变了,可是num的值却并无改变。也就是说:code

const定义的对象,当对象改变了以后,const定义的值也会跟着改变。对象

cosnt定义的变量是一个对象的一个属性值,可是当对象属性值改变了之后,const定义的这个值并不会改变。blog

那么这是为了什么呢?ip

在计算机中,常量是放在栈中的,而对象是放在堆中的。对于对象赋值,const指向的仅仅是他的地址,cosnt仅仅是保证这个地址不改变,至于地址对应的数据,是能够进行改变的。举个栗子,如今可能在外工做不少人都是租的房子,假如你住在a公寓的a单元101,cosnt就仅仅是保证他指向的是这个地址,至于你房子里住的是哪些人,他是不关心的。~it

而若是定义一个简单的数据类型,那这个数据他自己就是存在栈中的,因此不能够改变。class

写的有不合适的地方,欢迎指正,谢谢变量

相关文章
相关标签/搜索