基本数据类型:number string boolean null underfind symbol(ES6) BigInt(ES10)
引用数据类型:Object Array funtion
javaScript存储数据的方式主要是通过栈或者堆
基本数据类型
基本数据类型储存在栈中,有自己独立的空间
constname="rrr";constage=18;constheight=185;
引用数据类型
引用数据类型是将地址存储在栈中,地址指向堆中存储着对象、数组、函数的内容
拿对象举例:
创建内容相同的两个不同变量名的对象:
leta={name:"rrr"};letb={name:"rrr"};console.log(a===b);//false(因为a、b存储在栈中的地址不同)
将a复制一份给b并给a中的属性重新赋值:
leta={};letb=a;a.name="rrr";console.log(a,b);//{name:'rrr'}{name:'rrr'}地址指向相同,给a添加属性是添加到堆中
将a复制一份给b并给a重新赋值:
leta={};letb=a;a={name:"rrr"};console.log(a,b);//{name:'rrr'}{}虽然开始a、b指向内容相同,但是给a重新赋值后开辟了一段新的内存在堆中
深拷贝——b会获得新的地址和内存空间并将a中的属性遍历到b中:
leta={};letb=JSON.stringify(a);//深拷贝a.name="rrr";console.log(a,b);//{name:'rrr'}'{}'b会在堆中获得一段新的内存
摸鱼的时候看到的一个基础的问题,稍微理了一下思路,望大神纠正错误!