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'} {} 虽然开始a、b指向内容相同,但是给a重新赋值后开辟了一段新的内存在堆中
深拷贝——b会获得新的地址和内存空间并将a中的属性遍历到b中:
let a = {};
let b = JSON.stringify(a);//深拷贝
a.name = "rrr";
console.log(a, b);//{name: 'rrr'} '{}' b会在堆中获得一段新的内存
摸鱼的时候看到的一个基础的问题,稍微理了一下思路,望大神纠正错误!