分类: 系统运维
2010-02-08 09:33:13
chrome浏览器下的javascript中sort方法不同
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 来干点额外体力活时,一定要小心。