对于以下两段代码的输出之间的差异,我感到困惑:
var x = [{'size': 3}, {'size': 2}, {'size':1}];
console.log("Before I sort, x is", x);
x.sort(function(a, b) {
console.log("Sorting x…");
return a.size - b.size;
});
console.log("After I sort, x is", x);
收益
…这是令人惊讶的,因为“排序之前”数组似乎已排序。如果我删除了sort
,则即运行
var x = [{'size': 3}, {'size': 2}, {'size':1}];
console.log("Before I sort, x is", x);
// x.sort(function(a, b) { console.log("Sorting x…");
// return a.size - b.size; });
// console.log("After I sort, x is", x);
对此感到困惑,我也尝试打印出x[0]
,这是正确的,即使x
的显示不是即
var x = [{'size': 3}, {'size': 2}, {'size':1}];
console.log("Before I sort, x[0] is", x[0], "and x is", x);
x.sort(function(a, b) { console.log("Sorting x…");
return a.size - b.size; });
console.log("After I sort, x[0] is", x[0], "and x is", x);
收益
…这似乎无法解释,因为即使x
印刷的x[0]
也一样。
有什么作用?我该如何解释这种行为?
我希望没关系,但是我正在Google Chrome 69.0.3497.100(正式版本)(64位)上运行它
谢谢!