js基础总结(二)数据,变量及内存
1.什么是数据?
*存储在内存中代表特定信息的数据,本质上是二进制0101...
*具有可读和可传递的基本特性。
*数据的特点:可传递, 可运算。
*一切皆数据,函数也是数据。
*内存中所有操作的目标:数据
算术运算,逻辑运算,赋值,调用函数参数
2.什么是内存?
*内存条通电后产生的可储存数据的空间(临时的)
*内存产生和死亡:内存条(电路版)==>通电==>产生内存空间==>存储数据==>处理数据==>断电==>内存空间和数据都消失
*内存的空间是临时的,而应硬盘的空间是持久的。
*分配内存:声明变量和函数或创建对象时,JS引擎会自动为此分配一定大小的内存来存放对应的数据。
*释放内存:清空内存数据,标识内存可以在分配使用(内存不释放就不能复用)。
*自动释放:栈空间的局部变量。
*垃圾回调器回调:堆空间的垃圾对象。
* 一块小内存的2个数据
*内部存储的数据(一般数据/地址数据)
*内存地址值数据
*内存分类
栈:全局变量/局部变量(空间较小)
堆:对象(空间较大)
3.什么是变量?
*值可以变化的量,由变量名和变量值组成。
*每个变量都对应的一块小内存,变量名用来查找对应的内存,变量值就是内存中保存的内容。
4.内存,数据,变量三者之间的关系
*内存是一个容器,用来存储程序运行需要操作的数据。
*变量是内存的标识,我们通过变量找到对应的内存,进而操作(读/写)内存中的数据。
问题:var a = xxx, a内存中到底保存的是什么?
xxx是基本数据,保存的就是这个数据。
xxx是对象,保存的是对象的地址值。
xxx是一个变量, 保存的xxx的内存内容(可能是基本数据,也可能是地址值)。
//例1 var obj1 = {name : 'Tom'}; var obj2 = obj1; obj2.age = 12; console.log(obj1.age); // Tom function fn(obj){ obj.name = 'A' } fn(obj1) console.log(obj2.name); //A //例2 var a = {age:12}; var b= a; a = {name: 'Bob', age: 13}; b.age = 14; console.log(b.age, a.name, a.age); //14, Bob, 13 function fn2(obj){ obj = {age: 15} } fn2(a); console.log(a.age); //13
问题: JS 引擎如何管理内存?
1.内存生命周期
*分配内存空间;
*使用分配到的内存;
*释放内存空间。
2.释放内存
*全局部变量:为执行函数分配的栈空间内存,函数执行完自动释放。
*对象:为对象分配对空间内存,当内存没有引用纸指向时,会成为垃圾对象=>垃圾回收器回收=>释放此内存。
下一篇随笔内容:对象
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具