javascript函数传参方式

本文探讨JavaScript中的函数参数传递机制,重点是按共享传递(call by sharing)。通过示例展示了对象作为参数时,即使在函数内部修改对象属性,原对象也会受到影响。同时介绍了值传递和引用传递的概念,以及对象类型的特性:对象本身不可修改,但其属性可以被修改。此外,还提及了深克隆和浅克隆在对象修改中的作用。
摘要由CSDN通过智能技术生成

javascript基础:函数传参方式

先分析以下逻辑输入什么:

let a = {
      name:'a',
      age:12
}
function change(o){
      o.age = 18
      o = {
        name:'b',
        age:49
      }
      return o
}
let b = change(a)
console.log(a.age)//18
console.log(b.age)//49

涉及内容:

1.按值传递(call by value),按引用传递(call by reference),按共享传递(call by sharing)

(1)按值传递(call by value)是最常用的求值策略:函数的形参是被调用时所传实参的副本。修改形参的值并不会影响实参。

(2)按引用传递(call by reference),函数的形参接收实参的隐式引用,而不再是副本。这意味着函数形参的值如果被修改,实参也会被修改。同时两者指向相同的值。

(3)对象类型按共享传递的(call by sharing,也叫按对象传递、按对象共享传递),是JS中的对象类型传递方式(该求值策略被用于Python、Java、Ruby)。

​ 该策略的重点是:调用函数传参时,函数接受对象实参引用的副本(既不是按值传递的对象副本,也不是按引用传递的隐式引用)。

它和按引用传递的不同在于:在共享传递中对函数形参的赋值,不会影响实参的值。

2.深克隆和浅克隆

总结: 值传递不会被修改;对象传递,本身不会被修改,但属性值可以被修改且只能通过属性修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值