摘要:在的属性值改变了以后,的值是随着对象的改变而改变了,但是的值却并没有改变。也就是说定义的对象,当对象改变了之后,定义的值也会跟着改变。
es6中新增了一个const。就是用来定义一个常量的。以前其实一直没有把这个放在 心上,觉得就是定义一个常量的,很easy,没有什么可以深入的。
问题来了:
let obj = {"num1" : 20, "num2" : 30} const obj1 = obj const num = obj.num1 obj.num1 = 40
那么,试问这时候如果输出obj1 和 num的值,分别是多少呢?让我们在谷歌浏览器中试验一下
答案很显而易见了。在obj的num1属性值改变了以后,obj1的值是随着对象的改变而改变了,但是num的值却并没有改变。也就是说:
const定义的对象,当对象改变了之后,const定义的值也会跟着改变。
cosnt定义的变量是一个对象的一个属性值,但是当对象属性值改变了以后,const定义的这个值并不会改变。
那么这是为了什么呢?
在计算机中,常量是放在栈中的,而对象是放在堆中的。对于对象赋值,const指向的仅仅是他的地址,cosnt仅仅是保证这个地址不改变,至于地址对应的数据,是可以进行改变的。举个栗子,现在可能在外工作很多人都是租的房子,假如你住在a公寓的a单元101,cosnt就仅仅是保证他指向的是这个地址,至于你房子里住的是哪些人,他是不关心的。~
而如果定义一个简单的数据类型,那这个数据他本身就是存在栈中的,所以不可以改变。
写的有不合适的地方,欢迎指正,谢谢
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/107808.html
摘要:对比常量声明与声明常量声明与声明,都是块级声明。最后一点全局块级绑定与不同于的另一个方面是在全局作用域上的表现。块级绑定新的最佳实践在的发展阶段,被广泛认可的变量声明方式是默认情况下应当使用而不是。总结与块级绑定将词法作用域引入。 var变量与变量提升 使用var关键字声明的变量,无论其实际声明位置在何处,都会被视为声明于所在函数的顶部(如果声明不在任意函数内,则被视为在全局作用域的顶...
摘要:最近刚刚看完了你不知道的上卷,对有了更进一步的了解。你不知道的上卷由两部分组成,第一部分是作用域和闭包,第二部分是和对象原型。附录词法这一章并没有说明机制,只是介绍了中的箭头函数引入的行为词法。第章混合对象类类理论类的机制类的继承混入。 最近刚刚看完了《你不知道的 JavaScript》上卷,对 JavaScript 有了更进一步的了解。 《你不知道的 JavaScript》上卷由两部...
摘要:我们将循环执行五次,每次将一个函数到数组中。只有当你理解了,才能给出正确的答案。读者提到的两个问题声明的变量不是完全不可更改。不仅如此,而且有些最新的浏览器也还没有支持。 译者按: 使用let的确会比var安全很多。 原文: Why You Shouldn’t Use ‘var’ Anymore 译者: Fundebug 为了保证可读性,本文采用意译而非直译。 我已经使用ES2015(...
摘要:以往,在中声明变量的唯一方式是使用关键字。这种行为会阻止变量被访问,除非它们被声明了。因此,将一个对象声明为常量必须非常小心。之中,顶层对象的属性与全局变量是等价的。从现在开始,建议放弃使用,改为使用和。 以往,在 JavaScript 中声明变量的唯一方式是使用关键字 var。为了理解为何添加了 let 和 const,我们先看一个示例,了解使用 var 会带来怎样的麻烦。 var ...
为什么读webpack源码 因为前端框架离不开webpack,天天都在用的东西啊,怎能不研究 读源码能学到很多做项目看书学不到的东西,比如说架构,构造函数,es6很边缘的用法,甚至给函数命名也会潜移默化的影响等 想写源码,不看源码怎么行,虽然现在还不知道写什么,就算不写什么,看看别人写的总可以吧 知道世界的广阔,那么多插件,那么多软件开发师,他们在做什么,同样是写js的,怎么他们能这么伟大 好奇...
阅读 2928·2021-11-23 09:51
阅读 3748·2021-11-22 15:29
阅读 3210·2021-10-08 10:05
阅读 1533·2021-09-22 15:20
阅读 921·2019-08-30 15:56
阅读 1028·2019-08-30 15:54
阅读 714·2019-08-26 11:54
阅读 2617·2019-08-26 11:32