2014-07-05 99 views
0

爲什麼當我將一個變量賦給一個對象並對該變量進行更改時,它也改變了這些對象?例如:Javascript - [爲什麼?]爲一個對象指定一個變量

c = 26; 
a = b = c; 
a += 1; 

a  // 27 
b  // 26 
c  // 26 

z = {}; 
x = y = z; 
x.ab = 5; 

x  // Object {ab: 5} 
y  // Object {ab: 5} 
z  // Object {ab: 5} 

爲什麼(在上面的例子中)不y.abz.ab存在嗎?我只修改了x而不是yz。在第一個例子中(與整數)如何,當我改變的值a,bc不受影響?

+0

可變性是這裏的關鍵字。 – thefourtheye

+1

不是JS專家,但Java的解釋是你不是在處理對象,而是在處理對象的引用,所以'x''y'和'z'都指向已經創建的唯一對象 – SJuan76

+0

Short回答:因爲a,b和c引用一個不可變的標量值,而x,y和z引用一個可變對象。 –

回答

2

當您將一個對象分配給一個變量時,它只會引用原始對象,而不會創建副本。所以所有的變量都指向同一個對象。

相關問題