基本数据类型和引用数据类型有哪些区别_基本数据类型与引用数据类型的区别...

152c36967b1d4577daba6b159d1b0f12.png

更新于2020-12-31

基本数据类型:Number、String、Boolen 、 Symbol、 null 、 undefined

引用数据类型:object(普通对象、数组、正则、函数……)

区别

数据类型基本数据类型引用数据类型
储存的元素地址 (指针)
储存的地点

eg1

const a = []

对于常量 a 来说,假设内存地址(指针)为 #001,那么在地址 #001 的位置存放了值 [],常量 a 存放了地址(指针) #001,再看以下代码

const a = []
const b = a
b.push(1)

当我们将变量赋值给另外一个变量时,复制的是原本变量的地址(指针),也就是说当前变量 b 存放的地址(指针)也是 #001,当我们进行数据修改的时候,就会修改存放在地址(指针) #001 上的值,也就导致了两个变量的值都发生了改变。

eg2

function test(person) {
    person.age = 26
    person = {  name: 'yyy',
                age: 30      }
    return person
}
const p1 = {    name: 'yck',
                age: 25      }
const p2 = test(p1)
console.log(p1) // ->  26 'yck'
console.log(p2) // ->  30 'yyy'
​

第一步:p1 => 指向对象{name:'yck', age: 25}的指针 0001

第二步:test(p1) 传指针person.age = 26 修改该对象

第三步:代码继续执行 ,其中person为形参,初始为p1(指向0001)。然后因为 const声明的 p1是常量,不可以整体修改,所以函数内部person = {} 将在内存中新开辟一个空间存放形参,即另一个对象指针(0002)

第四步:return person 指针与函数头部 ,故而p2 为指向后者对象的指针

65f7ce669fca31e907bc3032bea4a865.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值