当前位置: 首页 > news >正文

js【详解】数据类型原理(含变量赋值详解-浅拷贝)

JavaScript 中的数据按存储方式的不同,分为值类型和引用类型。

  • 值类型(共 6 种):赋值的时候传值 —— 数字、字符串、布尔值、null 、undefined,Symbol
  • 引用类型(仅 1 种):赋值的时候传引用的地址—— 对象 Object

声明变量后,js引擎会在栈内存中开辟一个以该变量命名的存储空间,若未赋值,则该空间内存的值类型的数据 undefined。

  • 变量赋值时,若数据为值类型,则会将数据的值存入该变量命名的空间。(即变量中存的数据的值)

    • 存有值类型数据的变量赋值给另一个变量时,会将数据的值复制一份,存入新变量命名的空间中,两个变量内存储的数据相互独立,互不影响(改变A变量的值,B变量的值不会发生改变)
  • 变量赋值时,若数据为引用类型,则会先将引用类型的数据保存在堆内存中,再将该数据在堆内存中存储的地址存入该变量命名的空间。(即变量中存的是数据的引用地址)

    • 存有引用类型数据的变量赋值给另一个变量时,会将数据的引用地址复制一份,存入新变量命名的空间中(浅拷贝),两个变量实际指向的是同一份数据,相互影响(改变A变量的值,B变量的值也会同步改变)

之所以这样设计,是因为引用类型的数据通常较大,拷贝时需要花费更多的时间和空间,引用类型浅拷贝的设计,提升了数据的拷贝速度和内存空间的使用效率,从而表现出了更佳的性能。

http://www.lryc.cn/news/308789.html

相关文章:

  • SAM 影像分割——地理空间数据的分段模型的数据调参和自动分割分析
  • Java底层自学大纲_设计模式篇
  • 详解字符串函数<string.h>(上)
  • 1、docker入门
  • Qt应用软件【测试篇】cppchecker静态代码检查
  • [递推与递归]数的计算
  • Cocos Creator 3.8.x 后效处理(前向渲染)
  • 【前端素材】推荐优质后台管理系统 Adminity平台模板(附源码)
  • 身份证号与姓名实名认证接口-二要素实名认证-C++接口代码
  • 笑营宝高校选修课报名考勤系统源码开发方案
  • 类型字段定义影响WebApi传值及SqlSugar调用Select创建新对象
  • golang 函数式编程库samber/mo使用: IO
  • 在OceanBase使用中,如何优化因Join估算不准导致执行计划选错的问题
  • potplayer安装
  • PostgreSQL 与MySQL 对比使用
  • 配置nginx代理访问openai接口
  • 使用Python语言实现一个基于动态数组的序列队列
  • 面试数据库篇(mysql)- 07索引创建原则与失效及优化
  • 《互联网的世界》第三讲-tcp
  • JOSEF约瑟 JZS-7G-42 AC220V静态可调延时中间继电器 端子式导轨安装15ms-10s
  • Hudi配置参数优化
  • 适用Java SpringBoot项目的分布式锁
  • 面试笔记系列二之java基础+集合知识点整理及常见面试题
  • 搭建LNMP环境并搭建论坛和博客
  • 蓝桥杯刷题2
  • 低代码与国产化部署:软件开发的未来趋势与应用实践
  • 【Python笔记-设计模式】迭代器模式
  • Linux基本指令(上)
  • 浅谈XSS简单漏洞xss-labs-master(初级)
  • WordPress分类目录ID怎么看?如何查找WordPress标签ID?