这是我正在处理的一些React代码的简化版本,但显示出相同的行为。这是我的代码:
const arr = ['a', 'b', 'c', 'd'];
console.log(arr);
shuffle(arr);
console.log(arr);
function shuffle(array) {
console.log('shufflin');
let m = array.length, t, i;
while (m) {
i = Math.floor(Math.random() * m--);
t = array[m];
array[m] = array[i];
array[i] = t;
}
}
我希望第一个日志的输出是原始数组,但是展开它已经显示了改组版本。这怎么可能?
输出:
(4) ["a", "b", "c", "d"]
0: "a"
1: "c"
2: "b"
3: "d"
length: 4
__proto__: Array(0)
shufflin
(4) ["a", "c", "b", "d"]
0: "a"
1: "c"
2: "b"
3: "d"
length: 4
__proto__: Array(0)
Bergi提供了答案:在控制台中扩展对象(或数组)总是显示当前状态。