前端基础知识-8.数据类型的区别(堆栈内存机制)

浏览器执行JS代码的过程

浏览器想要执行JS代码,要经过这些步骤:

        let a=12;
        let b=1;
        b=13;
        console.log(a);
  1. 从浏览器中分配出一块栈内存(stack),用来执行js代码
  2. 浏览器分配出一个主线程用来自上而下执行js代码
  3. 创建变量a,放到当前栈内存的变量存储区域中
  4. 创建一个值12,把他放到当前栈内存的值区域中(简单的基本类型值都是这样村的,复杂的引用类型是存储的地址)
  5. 赋值,让a和12关联起来
  6. 创建b变量,让b和12的值关联
  7. b=13创建值13让b和13关联

简单值和复杂值的存储

基本类型按值操作,所以又叫值类型。引用类型按引用地址操作,所以叫引用类型
简单值的存储

简单值就是基本类型值,就是像上面一样直接在栈内存中开辟出一块值存储空间来存储

复杂值的存储
  1. 首先定义一个变量a存储在变量存储区域
  2. 在内存中分配出一块新内存用来存储引用类型值(堆内存,heap),内存中有一个16进制地址
  3. 把对象中的键值对存储在堆内存中
  4. 把变量a 和对象的键值对关联起来
  5. 依次执行代码 # 基本类型的值操作

练习题

 let n=[10,20];
       let m=n;
       let x=m;
       m[0]=100;
       x=[30,40];
       x[0]=200;
       m=x;
       m[1]=300;
       n[2]=400;
       console.log(n,m,x);//=> [100, 20, 400] , [200, 300]  ,[200, 300]
 let a={
          n:1
      };
      let b=a;
      a.x=a={
          n:2
      }
      console.log(a.x);//=>undefined
      console.log(b);//=>{n:1,x:{n:2}}
      console.log(a);//=>{n:2}
     var a='abc'+123+456;
     var b='456'-'123';
     var c=100+true+21.2+null+undefined+"tencent"+[]+null+9+false;
     console.log(a)//=>'abc123456'
     console.log(b)//=>333
     console.log(c)//NaNtencentnull9false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值