Javascript的本机排序方法如何工作?

Ant*_*ung 3 javascript sorting mergesort

[1, false, 10, "b", 3, "33", ":", "R", "^"].sort()
Run Code Online (Sandbox Code Playgroud)

产量如下:

[1, 10, 3, "33", ":", "R", "^", "b", false]
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释排序方法如何工作?我猜它必须将所有内容翻译成ASCII.

当我这样做时,情节会变浓

[1, false, 10, "b", 3, "33", ":", "R", "^"].sort(function(a,b) {return b-a})
Run Code Online (Sandbox Code Playgroud)

输出以下内容:

[10, 1, false, "b", "33", 3, ":", "R", "^"]
Run Code Online (Sandbox Code Playgroud)

这种疯狂的任何方法?

TbW*_*321 6

来自MDN:

如果未提供compareFunction,则通过将元素转换为字符串并按Unicode代码点顺序比较字符串来对元素进行排序.

和:

如果提供compareFunction,则根据compare函数的返回值对数组元素进行排序.

参考:https: //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort