簡體   English   中英

賦值后變量值未更新

[英]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中進行原始值的分配時

重要的是要指出,該分配不會將ab捆綁在一起。 事實上所發生的一切是從價值a被復制到b ,所以當我們去改變a我們不擔心影響b 這是因為這兩個變量由兩個不同的內存位置支持-無交叉。

簡而言之:

當您分配b = a

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

僅復制的價值a變量,並把它放在新的變量b具有不同的存儲位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM