浏览器栈内存
分享一些学习到的笔记
浏览器执行JS代码:
- 从电脑内存分配一块内存,执行代码(即栈内存 => Stack);
- 分配一个主线程自上而下执行JS代码
栈内存
栈内存又会分配出几个存储空间
- 变量存储空间
- 值存储空间
- 代码执行空间(主线程):
- 基本数据类型
- 代码进栈执行
- 例如let a = 1
- 创建变量a放进当前栈内存变量存储区域
- 创建一个值1,存储到栈内存值区域中(简单的基本类型,复杂的引用类型不是)
- =为赋值,让变量和值相互关联
- 执行完出栈,下一行代码进栈执行
- 按值操作
- 代码进栈执行
- 引用数据类型
- 代码进栈执行
- 例如let a = {…}
- 在内存中分配出一块新的内存,用来存储引用类型(堆内存 => heap)内存中有个16进制地址
- 把键值对分别存储到堆内存中
- 把堆内存地址放进值存储空间
- 把堆内存地址和变量关联起来
- 执行完出栈,下一行代码进栈执行
- 按引用地址操作
//浅拷贝,修改了同一个地址里面的值 let a = {name:666}; let b = a; b.n
- 代码进栈执行
- 基本数据类型