关于javascript:使用比较器中的“less / greater than”比较运算符对字符串进行排序

Sort strings by using “less/greater than” comparison operators in comparator

今天我发现了一个奇怪的字符串排序实现:

1
['Data', 'Chata', 'Clata'].sort(function(a, b) { return a > b});

使用这种方法,我们将一个有效的排序数组作为输出-["Chata","Clata","Data"]。但我不清楚为什么它会起作用…

我知道比较器函数需要三种不同的输出——零、零以上的整数、零以下的整数。但在这种情况下,我们只能取两个值:true(如果a大于b)或false(如果a小于b)(类型强制后为1或0)。

有人能给我解释一下为什么它会起作用吗?


我不完全确定它是如何运作的。

编辑它实际上没有。

我用1000个数字(https://jsfiddle.net/alnitak/80cje6gt/)生成了一个测试,而单个比较器没有生成正确的排序顺序:

1
2
3
4
5
var m = 0;
a.sort(function(a, b) { ++m; return a > b} );

var n = 0;
b.sort(function(a, b) { ++n; return a < b ? -1 : a > b ? 1 : 0});


比较字符串时,逐字母进行比较。因此,c的符号值比d的符号值低(请检查下表)。