摘要:前言中的类型只有种,其中基本数据类型有种分别为,引用类型有一种,就是,是一个大的综合体,在中除了那个基本数据类型以外,其他的一切皆对象。
前言
JS中的类型只有6种,其中基本数据类型有5种分别为string,number,boolen,null,undefined,引用类型有一种,就是object,object是一个大的综合体,在JS中除了那5个基本数据类型以外,其他的一切皆对象。正文 两个对比的例子
var a = 100; var b = a; a++ console.log(a)//101 console.log(b)//100
var obj1 = new object(); var obj2 = new object(); obj1.age = 18; obj2 = obj1; obj1.age++ console.log(obj1.age)//19 console.log(obj2.age)//19
可以看到上面两个例子都是改变了值,基本数据类型是被赋值的不会变,而引用的是被赋值的也会随之发生改变,那么这是为什么呢?其实很简单,一句话就可以概括:因为基本数据类型保存的是值,而引用类型保存的是地址。
解释例子创建一个新的变量时,会将它存放在栈中,如果是对象的话,就会在另外的更大的堆中划分一片区域,那么在栈中该对象存放的就是在堆中的地址。
如上图,基本数据类型是直接在栈中存放值的,当a发生变化的时候,b不会发生变化,因为b只是等于a的值,和a没有什么关系。
在obj1和obj2中存放的都是地址,obj2不是等于obj1的值,而是等于obj1在堆中存放的地址,所以当地址中的内容发生变化时,obj2的内容也会发生变化。只要创建一个新的对象,在堆中就会开辟一个新的区域去存放对象的属性和方法等内容。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/97761.html
摘要:那么如何切断和之间的关系呢,可以拷贝一份的数据,根据拷贝的层级不同可以分为浅拷贝和深拷贝,浅拷贝就是只进行一层拷贝,深拷贝就是无限层级拷贝。 深拷贝 vs 浅拷贝 深拷贝和浅拷贝都是针对的引用类型,JS中的变量类型分为值类型(基本类型)和引用类型;对值类型进行复制操作会对值进行一份拷贝,而对引用类型赋值,则会进行地址的拷贝,最终两个变量指向同一份数据。 // 基本类型 var a = ...
摘要:实际上,是禁止这样做的。传值和传址基本数据类型赋值基本数据类型的赋值是在内存中新开辟一段栈内存,然后再把再将值赋值到新的栈中。结果见输出,可以看出来,无论是修改赋值得到的对象和浅拷贝得到的都会改变原始数据。 存储问题:深拷贝和浅拷贝的主要区别:在内存中的存储类型(堆和栈)不同堆:动态分配的内存,大小不定也不会自动释放栈:自动分配的内存,由系统自动释放数据类型: 基本数据类型: jav...
摘要:四是在年出的持久性数据结构的库,持久性指的是数据一旦创建,就不能再被更改,任何修改或添加删除操作都会返回一个新的对象。避免大量使用操作,这样会浪费性能。尽量将设计成扁平状的。 一、痛点 在我们的印象中,React 好像就意味着组件化、高性能,我们永远只需要关心数据整体,两次数据之间的 UI 如何变化,则完全交给 React Virtual Dom 的 Diff 算法 去做。以至于我们很...
阅读 1209·2023-04-26 02:20
阅读 3335·2021-11-22 14:45
阅读 4111·2021-11-17 09:33
阅读 969·2021-09-06 15:00
阅读 1477·2021-09-03 10:30
阅读 3836·2021-07-26 22:01
阅读 989·2019-08-30 15:54
阅读 528·2019-08-30 15:43