JS-值类型和引用类型

JS-值类型和引用类型

  • 简单数据类型:值类型,变量存储的是值本身

    • Number 数字类型
    • String 字符串类型
    • Boolean 布尔类型
    • undefined 未定义,变量只声明,未赋值
    • null 空类型,变量已赋值,但是赋值的是一个空数据(还未被创建出来的对象)
  • 复杂数据类型:引用类型,变量存储的是内存地址

    • Array 数组
    • function 函数
    • Object 对象

    简单理解变量存储的是内存地址:比如对象,开辟一个对象的内存空间需要非常大的内存空间,大到栈内存无法提供,于是就去堆内存中开辟,就好像买房子,房子不能直接给你,于是给你一把钥匙,通过这把钥匙能找到房门去开启。

值类型和引用类型的赋值规则

  • 值类型:由于变量存储的是值本身,因此赋值也是值本身
    image

  • 引用类型:由于变量存储的是内存地址,因此赋值也是内存地址
    image

简单理解赋值也是内存地址:比如上例的买房子,现在我想居住这间房子,就需要旧对象复制一把钥匙给我,于是我通过这把钥匙可以打开房门。我在这间房子里做的任何改动,旧对象通过钥匙开启了房门之后都可以看得到,比如我拿走了这间房子的一个枕头,旧对象就能发现房子里少了一个枕头。

小练习

let a = []
let b = a
console.log(a === b) // true 因为赋值的是内存地址,a把钥匙复制了一份给了b,找到同一间房子

let c = {}
let d = c
console.log(c === d) // true

console.log({} === {}) // false 因为开辟了两个堆内存空间
posted @   jzhF1ash  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示