let arr = [1,2,3,4,5]
function A(_arr){
_arr[1] = 0
}
A(arr)
console.log(arr) // 1 0 3 4 5
function B(_arr){
_arr = null
}
B(arr)
console.log(arr) // 1 0 3 4 5
为什么经过函数B,arr没有变成null, 从函数A来看明明传递的是引用啊
let arr = [1,2,3,4,5]
function A(_arr){
_arr[1] = 0
}
A(arr)
console.log(arr) // 1 0 3 4 5
function B(_arr){
_arr = null
}
B(arr)
console.log(arr) // 1 0 3 4 5
为什么经过函数B,arr没有变成null, 从函数A来看明明传递的是引用啊
参数传递的时候,变量是有重新复制一遍的,第一个变了是因为复制的还是之前的内存地址,改的内部的值。第二个是把整个复制的内存地址都改变了,直接为Null。
也就是说参数传递的时候再方法里面是有开辟新的内存空间,像对象数组这种开辟了新内存间,但是复制的旧内存地址。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
传递的是引用,不过是把引用保存到
_arr
变量上,你再把此变量赋值为其他的东西,对原有的没有任何影响