在这段代码中 我来以 return a-b 为什么是升序为例来解释一下

1
2
3
4
5
function sortNum(a,b) {
return a - b;
}
var arr = [1,11,3,4,5];
alert(arr.sort(sortNum)); //[1,3,4,5,11]。

当开始排序的时候,首先把a=1和b=11作为参数传到sortNum(a,b)中,由于return得到的 1-11 的值是小于0的,按照规定中的第1条,1和11在数组中顺序不变;

……此处省略中间相似循环比较……

在排序到了数值11的时候,举例11和3比较,把a=11和b=3作为参数传数sortNum(a,b)中,由于return得到的 11-3 的值是大于0的,按照规定中的第3条,排序后,11和3交换位置。

这样在经历了不知道多少次的循环比较之后,数组的输出就变成了[1,3,4,5,11],也就是我们理解的升序排列,同理可以理解b-a了吧~~~