[英]Value of variable not getting updated after assignment
var a = 2;
var b = a;
console.log( b ); //2
a= 5;
console.log( b ); //2
問:為什么即使變量“ a”被分配了不同的值,變量“ b”卻獲得了值2
console.log(b)
返回2
因為當您訪問基本類型時,您將直接使用其值。
原因編號是不變的。
更改不可變值,將原始值替換為新值,因此不會更改原始值(這就是b = 2
)。
如果需要引用,請使用對象和/或數組var a ={value: 2}, b = a
a.value = 3 // also changes the value of be, since it can mutate
在javascript中,圖元(數字,布爾值,字符串)由值分配,只有對象由引用分配。
在Javascript中,整數是immutable
。 這意味着對象的值一旦分配就不能更改。 當你做
a=5;
b=a;
的確,兩者都是同一個對象的名稱,其值為5
。 稍后,當您-
a=2
它為引用分配a
值為2的新對象。因此,基本上a
現在指向一個新對象。 Ans兩個對象都存在。
為了更好的理解,您可以參考此鏈接
在javascript中進行原始值的分配時 :
重要的是要指出,該分配不會將a
和b
捆綁在一起。 事實上所發生的一切是從價值a
被復制到b
,所以當我們去改變a
我們不擔心影響b
。 這是因為這兩個變量由兩個不同的內存位置支持-無交叉。
簡而言之:
當您分配b = a
其實你沒有復制的引用a
變量,並b
指向內存中的同一個變量的位置。
僅復制的價值a
變量,並把它放在新的變量b
具有不同的存儲位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.