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 来干点额外体力活时,一定要小心。