我的代码:
var a = 23;
var b = a;
a = 46;
console.log(a);
console.log(b);
为什么 b 的值显示为23而不是46?
输出:
a = 46,b = 23,
答案 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的值没有影响。