JavaScript基本数据类型(7)- JS的底层执行流程(栈堆)

JS的执行流程

JavaScript语言本身是没法运行代码的,必须有解释器,也就是浏览器的内核,才能帮我们解析代码

那么浏览器底层是如何执行JS代码的?

  1. 首先从电脑中开辟出一块全局栈内存window(电脑内存8G/16G/32G),用来执行代码(栈内存 => Stack)

  2. 然后全局栈内存中有一个主线程,用来自上而下执行JavaScript代码

    栈内存里面有三个东西:变量存储空间,值存储空间,代码执行主线程

    堆内存用来存放引用数据类型,会产生一个十六位的内存地址,并被内存指针指向,内存指针被变量指向

    // 基本数据类型的执行步骤
    // 代码执行的顺序是从上往下,从左往右
    let a = 12;
        // 1. 创建一个值为 12,把他放到值存储空间内
        // 2. 创建一个变量 a,把他存储在栈内存的变量存储空间内
        // 3. 把变量 a 指向 12 这个值
    let b = a;
    	// 1. 由于 a 存放的是基本类型值,JS 会把 a 指向的值复制一份新的,把变量 b 指向这个新的值
    let n = {name: 'xyb'};
    	// 1. 开辟一块新的内存,叫做堆内存,专门用来放置引用数据类型,且有自己的16位地址 XXFFAABB
    	// 1. 创建一个变量 n,并指向一个内存指针,这个指针指向创建的堆内存 XXXFFFAABB
    let m = n;
    	// 1. 创建一个变量 m
    	// 2. 因为 n 里面存储的是引用数据类型,所以 m = n 实际上是吧 m 指向的指针复制了一份
    	// 3. 把 m 指向这份复制的指针,其实 m 和 n 最后指向的都是同一个内存地址
    m.name = '666';
    	// 1. 把 m 的内存地址指向的堆内存地址里面的 name 的值修改成 '666'
    consoloe.log(n.name);
    	// 1. 因为 n 和 m 指向的十六位内存地址是同一个,m的值发生了改变,所以 n.name 为 '666'
    

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值