秦皇岛市网站建设_网站建设公司_跨域_seo优化
2025/12/24 6:56:05 网站建设 项目流程

在 JavaScript 中,变量的存储方式取决于其类型:

一、基础类型(Primitive Types)

包括:undefined,null,boolean,number,string,symbol,bigint
存储特点:

  1. 直接存储在**栈内存(Stack)**中
  2. 变量保存的是实际值
  3. 赋值操作会创建值的副本
leta=10;letb=a;// b 获得 a 的副本a=20;// 修改 a 不影响 bconsole.log(b);// 输出 10(值不变)

二、引用类型(Reference Types)

包括:Object,Array,Function,Date
存储特点:

  1. 实际数据存储在**堆内存(Heap)**中
  2. 变量保存的是指向堆内存地址的指针
  3. 赋值操作仅复制指针(浅拷贝)
letobj1={name:"Alice"};letobj2=obj1;// obj2 复制 obj1 的指针obj1.name="Bob";// 修改堆内存中的数据console.log(obj2.name);// 输出 "Bob"(指针指向同一数据)

三、内存机制对比

特性基础类型引用类型
存储位置栈内存堆内存
赋值行为复制值本身复制指针(内存地址)
比较操作值相等即可(5 === 5需指针相同({} !== {}
内存管理随栈帧销毁自动回收需通过垃圾回收机制(GC)

四、关键差异说明

  1. 函数参数传递

    functionchangePrimitive(val){val=100;// 不影响外部变量(值传递)}functionchangeReference(obj){obj.prop="changed";// 修改堆内存(指针传递)}
  2. 深拷贝解决方案

    // 引用类型需显式深拷贝才能完全独立constoriginal={a:1,b:{c:2}};constdeepCopy=JSON.parse(JSON.stringify(original));

理解这两种存储机制对避免 JavaScript 的常见陷阱(如意外修改共享对象)至关重要。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询