首页 > 其他分享 >JS基本类型和引用类型的存储方式

JS基本类型和引用类型的存储方式

时间:2022-10-10 08:00:14浏览次数:45  
标签:存储 变量 JS 地址 引用 类型 指针 赋值

一、基本类型:
number , string ,boolean,null ,undefined ,放在栈,栈内存是自动分配内存的。
①基本类型比较是值的比较。
②基本类型是按值访问,可以直接得到变量值。

储存类型:值类型。存的是值,赋值之后原变量值不能改。
注:任何方法都无法改变一个基本类型的值,也不可以添加属性和方法。

let color = 'pink'
color = 'purple'
console.log(color) // 输出:purple
这样看,我们重新赋值,log出好像改变了,实际是指针改变。

如果重新赋值,指针指向新的栈空间,把新值放到新空间。之前的地址就是野房子,之前数据也不会销毁。

二、对象类型/引用类型:

 

 


Object ,Function ,Array ,Date等,放在堆,堆内存是动态分配内存的。如果被占用,不能释放,为减少内存消耗,fn=null,手动清除之前的引用。
①引用类型则是按引用访问。在访问引用类型的值时,先得到该值的地址,再通过该地址得到变量值。
②当一个对象赋值给另一个新对象时,用等号作比较就相等,因为引用(内存地址)相同。
附:==和===比的都是内存地址而不是结构。
举个栗子:两个不同的对象有相同的属性名和属性值,但用==和===仍不相等。因为比较的是引用,是内存地址。

存储类型:引用类型,存的是地址,值可以变,也可以添加属性和方法。

因为引用类型存的是地址,(当一个变量给另一个变量赋引用类型的值)赋值之后把原变量的引用地址赋给新变量。新变量改原来的也改变。也就是指针的赋值。任何操作会相互影响。

引用类型如果重新赋值,会在堆开辟新房间,指针指向新的堆地址。此时就不会互相影响。

最后附一下es6新增的数据类型:
symbol 和 bigInt
都是放在栈里的原始数据类型
symbol 代表创建后独一无二且不可变的数据类型,为了解决变量命名的冲突问题
bigInt 是一种数字类型的数据,标识任意精度格式的整数,安全地存储和操作大整数

标签:存储,变量,JS,地址,引用,类型,指针,赋值
From: https://www.cnblogs.com/qFire/p/16774336.html

相关文章

  • schema与数据类型优化
    schema与数据类型优化1.数据类型优化更小的通常更好尽量使用可以正确存储数据的最小数据类型,能使用int就不使用bigint应该尽量使用可以正确存储数据的最小数据类型,更小......
  • 016.五种通知类型
           ......
  • 03@shell数据类型及变量值的操作总结
    文章目录​​基本数据类型与值操作​​​​一、数据类型介绍​​​​1、什么是数据​​​​2、编程语言划分(shell的划分)​​​​二、基本数据类型​​​​1、数字​​​​......
  • 04@数据库库的相关操作及数据库存储引擎详述
    文章目录​​数据库库的相关操作​​​​一、库的相关操作​​​​1、系统数据库​​​​2、创建数据库​​​​3、数据库相关操作​​​​二、存储引擎​​​​1、存储引......
  • 流程结构及基本数据类型常见内置方法
    本周内容总结概要垃圾回收机制if分支结构while循环for循环整型内置方法浮点型内置方法字符串常用操作列表常用操作字典常用操作集合常用操作元组常用操作字......
  • definitions.json
     AdvancedRestClient的下载包链接:​​下载包​​​ 提取码:ofl3  还需要一个definitions.json 文件,从网上找的时候,都是需要积分的。然后去github上找了源码definit......
  • C# 遍历所有目录并在内部查找所有“sales.json”文件
    usingSystem;usingSystem.IO;usingSystem.Collections.Generic;namespacefiles_module{classProgram{staticvoidMain(string[]args){......
  • 基本数据类型的sizeof()
    基本数据类型的sizeof基本类型包括:bool,char,short,int,long,longlong,float,double32位编译器指针都是4位数据类型大小bool1char1short2int4long......
  • 权限类、频率类、鸭子类型、源码分析(认证类源码、权限类源码)
    目录权限类一、认证二、需求三、使用步骤频率类一、应用二、使用步骤源码分析一、认证源码分析二、权限源码分析三、频率类源码鸭子类型一、通俗化的解释二、详细说明注意......
  • @Redis数据类型及应用场景
    一、Redis与Memcached的区别1、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。2、Redis支持数据的备份,即master-slave模式的数据......