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

时间:2019-04-26 16:10:35

标签: javascript

我的代码:

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

为什么 b 的值显示为23而不是46?

输出:

a = 46,b = 23,

6 个答案:

答案 0 :(得分:3)

在Javascript中,仅对象/数组通过引用传递,而其他对象/数组则通过值传递。由于a和b具有整数值,所以它们按值传递。

答案 1 :(得分:1)

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

答案 2 :(得分: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 :(得分:0)

因为您给出a的值,即23。然后将a重新分配为46。

答案 4 :(得分:0)

在代码中,首先用 a 值初始化 23 ,然后分配 a b

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

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

Java-Script 中一样,仅对象/数组通过引用传递,而其他<值>则通过值传递。由于 a b 保留整数值,它们按值传递。

因此更新a的值不会导致b值的改变;如果在更新a的值之后将值分配给b,则会导致同时显示46的值a and b

答案 5 :(得分:0)

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