1. 程式人生 > >Javascript引用復制的賦值與傳遞

Javascript引用復制的賦值與傳遞

color javascrip pan 函數 font clas div ava nts

 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 共同指向的值。

Javascript引用復制的賦值與傳遞