函数传参数(深度解析)

1.ECMAscript中所有函数的参数是按照值传递的,也就是外部的值复制给函数内部参数

  • 基本类型的值传递就是复制一个副本进去
  • 引用型也是复制进去,但是是复制引用类型的一个值的地址(引用类型的值是储存在堆内存中,js不允许直接访问内存中的位置,也就是不能直接操作对象的内存空间,在操作时候实际是操作对象的引用而不是实际的对象。因此,引用类型的值是按照引用访问的)
function setName(obj) {
  //obj =  arguments[0] = person 此时传递进来一个值的地址(此时你交了一个女朋友)
    obj.name = "Nicholas"; //因为是引用类型,obj的值发生改变,person也改变(你给女朋友买了件阿玛尼的外套) 
    obj = new Object(); //obj =  arguments[0] = new Object() 此时传递进来一个值的地址!(你交了一个新女朋友)
    obj.name = "Greg";// 你给新女友买了件爱马仕的内裤
}

var person = new Object();
setName(person); //你把前女友带进商场
alert(person.name)//提问你给前女友买的啥

简化后

function setName(女人) {
    女人.购物 = "阿尼玛"; //前女友。购物 = “阿尼玛”
    女人 = new Object(); //女人 =  新女友
    女人.购物 = "爱马仕内裤";// 新女友.购物 = "爱马仕内裤"
}

var 前女友 = new Object();
setName(前女友); //你把前女友带进商场
alert(前女友.购物)//提问你给前女友买的啥
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值