1. 基本类型, 引用类型
2. 变量对象 和 堆内存
基本类型 保存在 栈stack内存中
引用类型值 保存在 堆heap内存中
事件循环机制 是在队列queue中
闭包引用会 保存在 堆heap内存中
预备知识
1 - heap, stack, queue
- 堆 heap: 类似kv, 我们知道key, 就能获取到value。
- 栈 stack: 栈空间先进后出,后进先出的特点。
- 队列 queue: 先进先出, Event Loop事件循环应用。
2 - 变量对象 和 基础类型
- 基础类型: Undefined, Null, Boolean, Number, String.
- js执行上下文后, 创建一个叫做 [变量对象] 的特殊对象。
- 基础数据类型 保存在 [变量对象]。
3 - 堆内存 和 引用类型
- 引用类型: Object, Array....
- 引用类型的值 是保存在堆内存的对象。
// 基础类型, 放在 变量对象中
const a = '1'
const b = 666
const c = true
const d = undefined
// 引用类型, 值放在 堆内存中
const e = { m: 20 }
const f = [1, 2, 3]
// 变量e,f 放在变量对象中, 值放在堆内存中, 通过地址指针相连接
// 例子1
var a = 20;
var b = a;
b = 30;
// 这时a的值是多少? 20
// 例子2
var m = { a: 10, b: 20 }
var n = m;
n.a = 15;
// m.a的值是多少? { a: 15, b: 20 }
5 - 内存空间管理
- 当你声明一个变量的时候,就会给该变量分配一个内存空间(变量对象)
- 使用完毕后, 释放
let a = 666
a = null // 自动垃圾收集机制
自动垃圾收集机制: 就是找出那些不再继续使用的值,然后释放其占用的内存