js:简单理解栈内存和堆内存

js的数据类型划分方式为

基本数据类型: Undefined,Null,Boolean,Number、String
引用数据类型: Object(包含 function、Array、Date)

基本数据类型的数据存储在栈内存中,引用数据类型的数据存储在堆内存。

变量只是将Object的地址存储到栈内存,使用的时候根据地址去堆内存中操作数据

const a = 1
const b = 1
console.log(a===b)//true

const c = [1]
const d = [1]
console.log(c===d)//false

const c = [1] 运行的时候发生了什么呢?

它声明了一个数组,把[1]存放在堆内存中,假设该数据在堆内存的地址为127.0.0.1,栈内存中实际为c= 127.0.0.1const d = [1] 存放的地址不一样了,它是127.0.0.2,所以栈内存中实际为d= 127.0.0.2,这就是c===d输出false的原因

------------------------------------------------------------------------end--------------------------------------------------------------------------

const 定义的值不能改?

const a = [1,2,[3,4]]
a[2][1] = 5
console.log(a)// [1,2,[3,5]]

确实不能改,因为常量a 存储的只是一个地址

那NaN是存在栈内存还是堆内存呢?

NaN === NaN //false

a= NaN
b = a
console.log(a == b) //false
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页