为什么ECMAScript标准Array.prototype.sort
在指定undefined
时坚持将compareFn
值放在数组的末尾?我希望compareFn
能够相应地处理这些问题并且它可以完全控制。
使用哪个compareFn
并不重要。规范在调用compareFn
之前指示此行为。
See the SortCompare abstract operation listing in the spec,第10步到第12步。
作为概念验证尝试运行:
var values = [undefined, undefined, 123];
values.sort(function(x, y) {
console.log('compareFn called');
});
没有痕迹。
答案 0 :(得分:2)
所以你的问题实际上是不:
为什么ECMAScript标准Array.prototype.sort坚持使用 在指定a时将未定义的值放在数组的末尾 compareFn?
因为您自己回答:它已在规范中定义。
我只能猜测,如果我这样做,我猜你真正的问题是:
为什么规范是按原样编写的?
这个问题没有真正的答案,但如果我要求回答,我会在Twitter上BrendanEich,Rick Waldron或任何其他TC39成员或在es-discuss邮件上注册列表。
也许如果您是社区的一员,可以避免使用有趣的功能。