原始值与引用值

文章探讨了JavaScript中按值存储的数据类型(如Undefined、Null、Boolean、Number、String、Symbol、BigInt)和引用值(对象)。按值存储的变量在赋值时会在内存中创建新的副本,互不影响。而引用值,如对象,实际上是存储对象的引用或地址,对对象的操作会影响到所有持有该引用的变量。这种机制类似于数据结构中的指针概念。
摘要由CSDN通过智能技术生成

原始值

Undefined、Null、Boolean、Number、Strig、Symbol、BigInt。这些值都是按值存储的,下面举个例子:

let name = 'xiaomi'
let name1 =name

以上代码中name1初始值为name,那么name1也会得到xiaomi这个值,这个值跟name中存储的xiaomi是完全独立的。两个值互不影响,这个过程如下图所示: alt

其实就是又开辟了一个内存空间用来存储name1。这种存储结构是不是很像数据结构中的

引用值

是由多个值构成的对象。在操作对象的时候其实是操作的对象的引用,这个引用相当于一个指针。下面来举个例子:

let obj = {name:'xiaomi'}
let obj1 = obj
obj1.price = 3999
console.log(obj) // {name: 'xiaomi', price: 3999}

以上代码中我们把obj赋值给了obj1, 但是当我们给obj1添加属性的时候obj也受到了影响。其实obj存储的只是对象的引用,在给obj1赋值的时候只是把对象的引用给了它,它两个保存的是同一个地址,所以操作的是同一个对象。此过程如图所示: alt

本文由 mdnice 多平台发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值