为什么b的值打印为23而不是46?

问题描述 投票:-2回答:6

我的代码:

var a = 23;
var b = a;
a = 46;
console.log(a);
console.log(b);

为什么b的值打印为23而不是46?

输出:

a = 46,b = 23,

javascript
6个回答
1
投票

var b = a;被执行时,b不会“引用”a。它成为一个数字,其值在此时为a的值。


但是,如果您使用Object,则归因将使用a的引用,而不是其值:

a = { value: 23 };
b = a;
a.value = 46;

console.log(b);
// console
Object { value: 46 }

3
投票

在Javascript中,只有对象/数组通过引用传递,其他通过值传递。当a和b保持整数值时,它们按值传递。


1
投票

看看这个answer。基元由值传递,对象通过引用传递。由于a和b是基元,因此它们通过值传递。当a改变时,不会反映在b中。


0
投票

因为你给的是a的值,那就是23.然后你将a重新指定为46。


0
投票

在你的代码中,首先用值a初始化23然后你将a的值赋给b

       var a = 23;
       var b = a;
        a = 46;
     console.log(a);
     console.log(b);

然后你更新a的值,但不将其分配给b

与在Java-Script中一样,只有对象/数组通过引用传递,其他通过值传递。由于ab保持整数值,因此它们按值传递。

所以更新a的值并没有导致b值的变化;如果你在更新一个值之后给b赋值,那将导致46显示a and b的值


0
投票

赋值运算符意味着您将右侧的值赋给左侧的值,因此通过此语句var b = a; b变为23,一旦你改变a,由于js的词汇范围,它对b的值没有影响。

© www.soinside.com 2019 - 2024. All rights reserved.