var a = 2;
var b = a;
console.log( b ); //2
a= 5;
console.log( b ); //2
问:为什么即使变量'a'被赋予不同的值
,变量'b'也会获得值2答案 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中执行原始值分配时:
指出此作业不会将a
和b
联系在一起非常重要。事实上,所有发生的事情都是a
的价值被复制到b
,所以当我们改变a
时,我们不必担心影响b
}。这是因为这两个变量由两个不同的内存位置支持 - 没有交叉。
简单地说:
指定b = a
实际上,您并没有复制a
变量的引用,并使b
指向内存中的相同变量位置。
您只复制a
变量的值并将其放入具有不同内存位置的新变量b
中。