新手问题(JavaScript有关数组的排序问题)

例子:
arr.sort(orderby);
function orderby(a,b)

return a-b;

这样写不太明白为什么能对数值大小进行排序?图片说明

arr.sort(compareFn);
compareFn - 一个用来确定数组元素排序顺序的比较函数。此参数是可选的。比较函数应该用两个参数进行比较。给定元素 A 和 B,compareFn 的结果可以具有负值、0 或正值:
若返回值为负,则表示 A 在排序后的序列中出现在 B 之前。
若返回值为 0,则表示 A 和 B 具有相同的排序顺序。
若返回值为正,则表示 A 在排序后的序列中出现在 B 之后。

你上面写的
arr.sort(orderby);
function orderby(a,b)

return a-b;

orderby就是比较函数compareFn,a,b值是arr数组的两个值,它会把里面的每个数组值都进行比较的

你这样写是有问题的。把代码贴完整啊

oderby 是一个返回 bool的函数,true 表示需要进行调整顺序,JS解释器会按返回值进行相应的排序。

因为排序算法在sort内部实现了,唯一排序算法不确定的,是根据什么来排序,说白了就是给定两个数据,用什么规则判断谁大谁小。
而你传进去的orderby函数就是定义这个的。
sort会使用某种排序算法排序,在排序的过程中,会调用你的orderby来确定元素的大小关系。

首先 js 是一种弱类型的语言, function orderby(a,b) 中 函数名orderby 可以做为函数的引用传入arr.sort(orderby) 中 ,
js的解释时,会自动根据orderby的返回值对数据arr进行排序。
其中a和b分别为arr中的元素。