JS 直接赋值与引用式赋值

在这里插入图片描述

JS 直接赋值与引用式赋值

在JavaScript中基本(简单)数据类型都是传值赋值复杂数据类型都是引用赋值(传地址)

基本概念

  • 简单数据类型:在存储变量中存储的是值本身:string number boolean undefined null
  • 复杂数据类型:在存储时变量中存储的仅仅是地址,因此叫,通过new关键字创建的对象:Object,Array,Date等
  • 简单数据类型 是存放在里面,里面直接开辟一个空间存放的是

    => var a=b; //a与b无关

  • 复杂数据类型 首先在里面存放地址,然后这个地址指向里面的数据

    => var a=b; //a与b联动

传值赋值(值传递)

function test(i){
console.log(i)
   i = 2 // a与i 没有关系
}
var a = 1
test(a) //传入 简单数据类型 a 参数
console.log(a) // 1
  • 当传入的是简单数据类型的参数时:就是复制了区的内容给i而已,i与a之间没有关系。

引用赋值(传地址)

function test(person) {
   console.log(person)
   person.age = 26; // 导致p1地址指向的内容堆区发生改变
}

const p1 = {
   name: 'yck',
   age: 25
}

test(p1) // 传入了复杂类型(对象)的地址
console.log(p1) // {name:'yck',age:26}
  • 当传入的参数为复杂数据类型时:复制了栈区的地址给函数,函数可通过地址修改堆区数据。

图像示例

为了更形象一点,可以尝试看看以下内容

  1. 传值赋值(值传递)
    在这里插入图片描述
    在这里插入图片描述
  2. 引用赋值(传地址)
    在这里插入图片描述
    在这里插入图片描述

小结:只是小结了这方面小小的内容,还有许多更深的知识点需要补充,希望各位大佬多多指教,也希望这篇文章能帮助到你~

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值