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 来干点额外体力活时,一定要小心。
转载请注明 文章来源: http://www.ignet.net
JavaScript数组sort方法优化陷阱
本文探讨了JavaScript中数组sort方法的优化与陷阱,重点分析了Chrome浏览器对sort方法的特殊处理及其对开发者可能带来的误导。提醒开发者在使用sort方法进行额外操作时需谨慎。
461

被折叠的 条评论
为什么被折叠?



