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

关于Javascript中数组作为函数参数的问题?

关于Javascript中数组作为函数参数的问题?

茅侃侃 2019-04-25 22:19:29
let arr = [1,2,3,4,5]function A(_arr){    _arr[1] = 0}A(arr)console.log(arr) // 1 0 3 4 5function B(_arr){    _arr = null}B(arr)console.log(arr) // 1 0 3 4 5为什么经过函数B,arr没有变成null, 从函数A来看明明传递的是引用啊
查看完整描述

2 回答

?
一只萌萌小番薯

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

传递的是引用,不过是把引用保存到_arr变量上,你再把此变量赋值为其他的东西,对原有的没有任何影响


查看完整回答
反对 回复 2019-05-19
?
Smart猫小萌

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

参数传递的时候,变量是有重新复制一遍的,第一个变了是因为复制的还是之前的内存地址,改的内部的值。第二个是把整个复制的内存地址都改变了,直接为Null。
也就是说参数传递的时候再方法里面是有开辟新的内存空间,像对象数组这种开辟了新内存间,但是复制的旧内存地址。

查看完整回答
反对 回复 2019-05-19
  • 2 回答
  • 0 关注
  • 1206 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信