首页 > 其他 > 详细

(二) const的本质

时间:2021-07-30 08:56:48      阅读:28      评论:0      收藏:0      [点我收藏+]

2. const

const主要用于定义常量

// 对于基本类型
const p = 100
p = 200 // TypeError: Assignment to constant variable

// 对于引用类型
const obj = {name: ‘猫13‘}
obj.name = ‘猫14‘
console.log(obj)		// {name: "猫14"}
obj = {}	// TypeError: Assignment to constant variable

const定义常量的本质: 保证栈内存中的值不能被改变, 什么意思 ?

我们知道, 计算机是通过内存地址来查找内存空间的, 内存空间又分为 , 我们声明一个变量, 无论用何种方式, 变量名一定是存储在栈内存中, 并且指向该内存的内存地址, 也就是说, 变量名是对内存地址的一个引用

技术分享图片

而当我们给一个变量赋值的时候, 这时候就要看这个值的具体类型了

  • 对于基本类型, 栈内存中保存的就是值本身, 如上图
  • 对于引用类型, 栈内存中保存的是该引用类型的引用 (是一个内存地址), 真正的值保存在堆内存中, 如下图

技术分享图片

因此, 当我们用const声明一个变量并为其赋值一个基本类型时, 是不允许再改变的, 而当我们赋值一个引用类型时, 栈内存中保存的地址并没有改变, 改变的是堆内存中的东西

另外, 每当我们创建一个对象, 就会在堆中开辟一块空间, 因此当我们为执行 obj = {}时, 栈内存中保存的引用已经被改变了

技术分享图片

(二) const的本质

原文:https://www.cnblogs.com/zhimao/p/15077932.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!