JavaScript的基本数据类型与引用数据类型的存储方式

312 阅读1分钟

JavaScript的基本数据类型与引用数据类型的存储方式

基本数据类型:number string boolean null underfind symbol(ES6) BigInt(ES10)

引用数据类型:Object Array function

javaScript存储数据的方式主要是通过栈或者堆

基本数据类型

基本数据类型储存在栈中,有自己独立的空间

const name = "rrr";
const age = 18;
const height = 185;
引用数据类型

引用数据类型是将地址存储在栈中,地址指向堆中存储着对象、数组、函数的内容

拿对象举例:

创建内容相同的两个不同变量名的对象:

let a = { name: "rrr" };
let b = { name: "rrr" };
console.log(a === b);  //false(因为a、b存储在栈中的地址不同)

将a复制一份给b并给a中的属性重新赋值:

let a = {};
let b = a;
a.name = "rrr";
console.log(a, b);//{name: 'rrr'} {name: 'rrr'} 地址指向相同,给a添加属性是添加到堆中

将a复制一份给b并给a重新赋值:

let a = {};
let b = a;
a = { name: "rrr" };
console.log(a, b);  //{name: 'rrr'}  {}   虽然开始ab指向内容相同,但是给a重新赋值后开辟了一段新的内存在堆中

深拷贝——b会获得新的地址和内存空间并将a中的属性遍历到b中:

let a = {};
let b = JSON.stringify(a);//深拷贝
a.name = "rrr";
console.log(a, b);//{name: 'rrr'} '{}' b会在堆中获得一段新的内存

摸鱼的时候看到的一个基础的问题,稍微理了一下思路,望大神纠正错误!