JS教程:Chrome对数组的sort方法优化
http://www.itjxue.com 2015-08-06 23:08 来源:未知 点击次数:
var a = 0, b = 0;
[0, 0].sort(function() {
a = 1;
return 0;
});
[0, 1].sort(function() {
b = 1;
return 0;
});
alert(a === b); // true or false ?
上面的代码,除了 Chrome 输出 false, 其它浏览器皆为 true.
原因是 Chrome 对数组的 sort 方法进行了优化:
function sort(comparefn) {
var custom_compare = (typeof(comparefn) === function);
function Compare(x,y) {
if (x === y) return 0;
if (custom_compare) {
return comparefn.call(null, x, y);
}
...
}
虽然是优化,但也是陷阱。想用 sort 来干点额外体力活时,一定要小心。