浏览器底层相关--堆栈内存篇

渲染机制

1.在浏览器中打开页面,浏览器引擎会渲染相关的代码,换句话说会把代码从上往下执行
2.浏览器要执行代码,会提供一个供代码执行的环境,叫做ECStack(Execution Context Stack 环境执行上下文)=> 栈内存
3.最开始执行的是全局代码,会形成一个EC(GLOBAL)全局执行上下文,在栈内存中执行全局的代码
4.在全局执行中有一个VO(GLOBAL)全局对象,可以吧定义的变量和值存储在这里边

定义变量的三个步骤

基本类型变量

let a = 12;

1.创建值12(基本类型值直接存储在栈内存中即可
2.创建变量a,把其存储在对应的VO中
3.让创建的变量a和创建的值12关联在一起

引用类型变量

let n = {name : "一一"}

1.创建值

  • 开辟一个堆内存,每一个堆内存都有一个16进制的地址(AAAFFF000)
  • 把对象中的键值对分别存储到堆内存中
  • 把堆内存的地址存储在栈内存中
    2.创建一个变量
    3.让创建的变量n和栈内存中存储的堆内存地址关联在一起

面试题1

let a = {},
    b = '0',
    c = 0;
a[b] = "一一";
a[c] = "还是一一";
console.log(a[b]);//“还是一一”,其他非字符串格式作为key和把它转化为字符格式没啥区别

面试题2

let a = {},
    b = Symbol("1"),
    c = Symbol("1");
a[b] = "一一";
a[c] = "还是一一"/* Symbol是唯一值,两个Symbol是不想等的这里是两个熟悉
 * 此时,a = {
 *          Symbol("1") : "一一",
 *          Symbol("1") : "还是一一"
 *          }
 */          
console.log(a[b]);//“一一”
console.log(a[b]);//“还是一一”

面试题3

let a = {},
    b = {n : "1"},
    c = {m : 2}
a[b] = "一一"//b被转换成字符串[object Object]
a[c] = "还是一一"//c被转换成字符串[object Object]
console.log(a[b]);//“还是一一”,

堆栈内存(待整理)

Stack栈内存

  • 作用
    1.供代码执行
    2.存储基本类型

Heap堆内存

  • 作用(只有一个)
    存储应用类型的值
    所谓堆栈内存,就是在计算机内存中分配出一块空间,用于执行和存储代码
    =>内存条:4GB 8GB
    =>硬盘:500GB
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值