几个例子理解不同数据类型的堆栈内存处理

本文通过示例详细解析JavaScript在不同环境(浏览器、Node.js)中的运行机制,特别是堆栈内存(栈内存和堆内存)如何处理不同数据类型,包括变量声明、赋值操作以及引用类型值的存储。并介绍了全局对象(Global Object)在浏览器和Node.js中的差异。
摘要由CSDN通过智能技术生成

js代码的运行环境

  • 浏览器 内核(引擎)
  • node
  • webview(hybrid,嵌入到手机app里面,在app里面运行)

下面通过几个例子理解不同数据类型的堆栈内存处理

js如何运行(示例1)

var a = 12;
var b = a;
b = 13;
console.log(a);

浏览器能够运行js代码,是因为浏览器会在计算机内存中分配出一块内存,用来供代码执行,这块内存叫栈内存,也叫Stack,或者ECStack(Execution Context Stack)执行环境栈

为了区分是哪个区域(全局或者函数等)下的代码执行,会产生一个执行上下文(EC : Execution Context)。所谓执行上下文,其实是一个抽象的概念,简单来理解就是代码执行区域的划分。

在全局环境下会产生 EC(G) :Execution Context (golbal) 全局执行上下文,其中VO(G)全局变量对象(Varibale Object)存储全局执行上下文声明的变量,然后进入栈内存执行。

几个例子理解不同数据类型的堆栈内存处理

 

声明变量的步骤

接着开始执行,先声明变量,声明变量有三步

var [变量] = [值]

  1. 先创建值(执行等号右边)基本数据类型是直接存储在栈内存当中引用类型的值,都是开辟一个单独的内存空间(堆内存Heap)存储信息
  2. 声明变量 declare存放到当前上下
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值