【退役之重学前端】关于对编程本质的回忆、理解和梳理

理论准备-

  1. 编程的本质,就是对内存中数据的访问和修改。程序所用的数据都会保存在内存中。(《疯狂java第四版》李刚 第49页 )
  2. 字节(byte),字节是计算机存储中的基本单位,由8位二进制数字组成,用于存储单个字符和小的数据单元。在计算机中所有的数据都以字节的形式存储和处理。(AI)
  3. 现代计算机中常以字节数来描述容量的大小,因为一节字节已被定义为8位二进制代码,故用字节数便能反映主存(即内存)容量。(《计算机组成原理第三版》唐溯飞 第17页)。
  4. 比特(bit),来源于binary digit, 意思是一个"二进制数字",因此一个比特就是二进制数字中的一个1或0。(《计算机网络第七版》谢希仁 第21页)
  5. 由第二点和第四点可知,1字节 = 8比特

现在我们来看 JavaScript 中最简单的一条语句,编译器是怎么处理的

javascript 复制代码
var foo = 5;

编译器做的第一件事情,是把它分解成token,然后编译成变量树(作用域链或作用域树)。

当编译器进入到代码生成阶段,它会这样做:

遇到var foo,编译器会向scope查询,看在这个特定的作用域内foo变量是否存在,如果存在,编译器将会忽略这个声明继续执行。否则,编译器会让scope在这个作用域中声明一个叫做foo的新变量,如果不是严格模式的话。

然后编译器生成代码来供引擎稍后执行,以处理foo=5赋值。代码引擎将首先询问scope,是否在当前作用域内能访问到一个叫做foo的变量。如果有,引擎会使用这个变量,如果没有,引擎将会在其他地方查找(将会在之后被覆盖)。

Javascript --- How the Engine Compiles?

Osman Akar

medium.com

在内存中是如何表现的呢?

JavaScript引擎使用作用域树来管理变量,作用域树存储在给JavaScript引擎分配的内存中,而变量值则存储在计算机的内存中。

javascript 复制代码
var foo = 5;

根据以上所述,笔者推论:值(5)存储在计算机的内存中,foo变量存储在作用域树中,并且foo存储的是值(5)所在内存块的地址。

相关推荐
Helen_cai4 分钟前
OpenHarmony 项目统一全局样式、尺寸、色彩主题封装 ThemeUtil(API23)
开发语言·前端·javascript·华为·harmonyos
郑州光合科技余经理5 分钟前
家政O2O平台解析:从0搭建上门预约小程序解决方案
android·java·开发语言·前端·小程序·架构·php
小徐_233316 分钟前
AI 写 wot-ui 总在猜 API?我们把 Skills、MCP 和 CLI 都配好了
前端·uni-app·ai编程
winfredzhang21 分钟前
用 wxPython + ECharts + 阿里矢量地图,做一个可离线兜底的上海雨量看板
前端·javascript·echarts
索西引擎33 分钟前
【React】Immer.js 在现代 Redux 生态中的角色:不可变性保障的工程化实现与开发体验优化
前端·javascript·react.js
kisshyshy35 分钟前
《川剧变脸 × React 状态管理?我在浏览器里跑了个端侧大模型》
前端·react.js·架构
只一36 分钟前
端侧AI实战第二章:React组件工程化 + 事件系统 + 可复用进度条(WebGPU模型加载底座)
前端·react.js
只一43 分钟前
拿捏大模型输出随机性:Temperature、Top-K 原理 + LangChain 工程落地实战
javascript·langchain
大卫陈1 小时前
微信小程序虚拟支付实战:从「支付能力被限制」到沙箱调通的全过程
前端·后端
武子康1 小时前
vLLM 0.25.1:服务没有报错,为什么仍会生成垃圾 Token(5 级正确性门禁 + 自动回滚条件)
前端·人工智能·后端