JS 内存运行

130 阅读1分钟

一段简单代码

let a = 12;
let b = a;
let b = 13;
console.log(a);

let a = {n: 12};
let b = a;
b['n'] = 13;
console.log(a.n);

let a = {n: 12};
let b = a;
console.log(a.n)

解释在内存的运行

  • ECstack 执行环境

  • 栈内存( stack )

  • VO()

  • stack

首先会有一个 ECstack 执行环境栈,然后会有一个 EC(GLOBAL)全局执行上下文,EC(GLOBAL)会有一个进栈执行的过程,在每一个执行上下文里面会有两个概念,一个VO(G),一个 AO ,称作环境变量,主要就是让设置的变量或者存储的值可以再指定的栈内存中进行存储,lei a ,将值 12 储存,然后指针引用。只有袁术数据类型才直接放在栈内存 number,string,boolean,null,undefined,Symbol。

  • 堆内存

如果存放引用类型值(对象, 函数)会开辟一个堆内存进行存放,首先 let a ,然后赋值{n:12}发现是一个引用类型值就会开辟一个堆内存进行存放,然后执政执行这个堆地址,一般用十六进制代表比如AAAFFF111 堆内存地址,如果在深挖会涉及到函数堆和对象堆储存到内容不一样,__proto__ 原型链面向对象的机制。