js执行环境
- 浏览器「浏览器内核 -> JS渲染引擎」
- Hybrid混合APP「webview基于webkit内核」
- Node
过程
- 执行环境栈 ECStack「Execution Context Stack」:浏览器再计算机内存中,开辟执行JS代码的栈内存
- 全局执行上下文 EC(G) -> Execution Context(Global):区分不同区域代码执行
- 全局变量对象VO(G) -> Varibale Object(Global):存储全局上下文中的声明
- 进栈出栈:当前区域的执行上下文形成进栈,执行完成出栈
- 词法分析,变量提升(暂略)
- 代码执行:
- 赋值过程:
- 1.创建值
- 基本类型值,直接存栈内存,
- 引用类型,开辟新的堆内存Heap,
- 每个堆有16进制地址
- 把键值对分别存储到堆中
- 16进制地址放到栈内存中存储,方便后期变量关联
- 2.声明变量 declare
- 3.变量和值关联到一起
内存区别:性能优化 -> 内存优化:
- 栈内存:代码执行 & 存储基本类型值
- 堆内存:存储引用数据类型
连等赋值运算
var a = { n: 1 }
var b = a
a.x = a = { n: 2 }
console.log(a.x)
console.log(b)
*/