为了账号安全,请及时绑定邮箱和手机立即绑定

引用型的参数this指向哪

引用型的参数this指向哪

慕雪6442864 2018-12-19 18:19:20
  var a=[1,2,3]     var add=function (arr) {          arr.splice(0,1)      }      add(a)      console.log(a) //[2,3]           var add1=function (arr) {          arr="1"      }      add1(a)      console.log(a)  //[2,3]这是为何.. 参数如果是切断this指向复制一个新值 那arr.spice(0,1)就不会改变 如果是指向引用 那arr="1" console.log()出来的应该是1?
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

题主同意的答案明显有错误,JS的函数参数是分按值传递和传址传递的,如果都是传值传递,那么结果就得像PHP一样,什么都不会有改动,就算用了 splice 。(顺便一提在php中需要使用&用作引用传递)


只不过如果传递的是复合类型,如果函数内部修改的,不是参数对象的某个属性,而是替换掉整个参数,这时不会影响到原始值。


var add1=function (arr) {

        arr="1"

}

add1(a)

这里在函数add1()可以看作:


// 把参数赋值给形参

arr = a;

// 又赋值给了 1

arr = '1'

这里当然没有被修改。


查看完整回答
反对 回复 2019-01-28
  • 1 回答
  • 0 关注
  • 420 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号