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.释放内存
  *全局部变量:为执行函数分配的栈空间内存,函数执行完自动释放。

  *对象:为对象分配对空间内存,当内存没有引用纸指向时,会成为垃圾对象=>垃圾回收器回收=>释放此内存。

下一篇随笔内容:对象

posted @   king'sQ  阅读(127)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示