【发布时间】:2012-07-02 08:03:09
【问题描述】:
这段代码我理解。我们复制 A 并将其称为 C。当 A 更改时,C 保持不变
var A = 1;
var C = A;
console.log(C); // 1
A++;
console.log(C); // 1
但是当 A 是一个数组时,情况就不同了。不仅C会改变,而且在我们接触A之前它也会改变
var A = [2, 1];
var C = A;
console.log(C); // [1, 2]
A.sort();
console.log(C); // [1, 2]
谁能解释第二个例子中发生了什么?
【问题讨论】:
-
如果您想知道排序在发生之前似乎是可观察的,请在记录时对数组进行浅层克隆。你会看到实际的结果。
console.log(C.slice()); A.sort(); console.log(C);不要太相信console的数据表示。它们并不完美。 -
@FrederikH 实际上,您所描述的是一个已知的错误,该错误已在 2012 年 8 月为 Webkit 进行了修补(尚未纳入 Google Chrome)。详情见我的回答。
-
也许使用 console.table() ?
标签: javascript google-chrome variables