2017-05-26 56 views
2
var a = 2; 
var b = a; 

console.log(b); //2 

a= 5; 

console.log(b); //2 

問:爲什麼變量「B」是越來越值2,即使變量a被分配不同的值價值變量賦值後不會得到更新

+0

當您設置b時,a爲2。 b是2. –

+1

你在混淆JavaScript和Verilog。 – stark

+3

'number'是一個原始數據類型,不是「參考」。請參閱https://stackoverflow.com/questions/13266616/primitive-value-vs-reference-value –

回答

1

原因號碼是不可改變的。

更改一個不可變的值,用一個新值替換原始值,因此原始值不會更改(這就是爲什麼b = 2)。

如果需要一個引用,使用對象和/或陣列 var a ={value: 2}, b = a a.value = 3 // also changes the value of be, since it can mutate

2

console.log(b)返回2因爲當您訪問直接在其值的工作基本類型。

1

在JavaScript中,基元(數字,布爾,字符串)是按值分配的,只有對象是通過引用分配的。

1

在Javascript中,整數是immutable。這意味着一旦分配了對象的值就不能改變。當你做

a=5; 
b=a; 

這是事實,兩者是相同的對象,其值是5的名字。 後來,當你做 -

a=2 

它分配基準a一個新的對象,其值爲2。所以基本上a現在指向一個新的對象。 Ans存在兩個對象。

爲了更好地理解你可以參考這個link

1

在做在JavaScript 分配的原始值的:

據指出,這項任務並不配合ab在一起是很重要的。實際上發生的一切都是從a的值被複制到b,所以當我們去更改a時,我們不必擔心影響b。這是因爲兩個變量由兩個不同的存儲位置支持 - 沒有交叉。

簡單的方法:

當分配b = a

其實你沒有複製a變量的引用,使b指向內存中的同一個變量的位置。

您只複製a變量的值,並將其置於具有不同內存位置的新變量b中。