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 来干点额外体力活时,一定要小心。
...[ 查看全文 ]