赋值后变量未更新的值

时间:2017-05-26 19:36:08

标签: javascript

var a = 2;
var b = a;

console.log( b ); //2

a= 5;

console.log( b ); //2

问:为什么即使变量'a'被赋予不同的值

,变量'b'也会获得值2

5 个答案:

答案 0 :(得分:2)

console.log(b)会返回2,因为当您访问基本类型时,您会直接使用其值。

答案 1 :(得分:1)

原因数字是不可变的。

更改不可变值,用新值替换原始值,因此原始值不会更改(这就是为什么b = 2)。

如果需要引用,请使用对象和/或数组 var a ={value: 2}, b = a a.value = 3 // also changes the value of be, since it can mutate

答案 2 :(得分:1)

在javascript中,基元(数字,布尔,字符串)按值分配,只有对象通过引用分配。

答案 3 :(得分:1)

在Javascript中,整数为immutable。这意味着一旦分配了对象的值就不能改变。当你这样做

a=5;
b=a;

两者都是同一个对象的名称,其值为5。 以后你做的时候 -

a=2

它为引用a分配一个值为2的新对象。因此,a现在基本上指向一个新对象。 Ans这两个对象都存在。

为了更好地理解,您可以参考此link

答案 4 :(得分:1)

在javascript中执行原始值分配时:

指出此作业不会将ab联系在一起非常重要。事实上,所有发生的事情都是a的价值被复制到b,所以当我们改变a时,我们不必担心影响b }。这是因为这两个变量由两个不同的内存位置支持 - 没有交叉。

简单地说:

指定b = a

实际上,您并没有复制a变量的引用,并使b指向内存中的相同变量位置。

您只复制a变量的值并将其放入具有不同内存位置的新变量b中。