Javascript引用复制的赋值与传递

 1     function foo(x) {
 2       x.push(4)
 3       console.log(x); // [1, 2, 3, 4]
 4       x = [4, 5, 6]
 5       x.push(7)
 6       console.log(x) // [4, 5, 6, 7]
 7     }
 8     var a = [1, 2, 3]
 9     foo(a)
10     console.log(a) // [1, 2, 3, 4]   

我们向函数传递 a 的时候,实际是将引用 a 的一个复本赋值给 x,而 a 仍然指向 [1,2,3]
在函数中我们可以通过引用 x 来更改数组的值(push(4) 之后变为 [1,2,3,4])。但 x =
[4,5,6] 并不影响 a 的指向,所以 a 仍然指向 [1,2,3,4]
我们不能通过引用 x 来更改引用 a 的指向,只能更改 a x 共同指向的值。

posted on 2019-02-25 11:27  时光游弋  阅读(314)  评论(0编辑  收藏  举报