<html>
<body><script type="text/javascript">function sortNumber(a, b)
{
return a - b
}var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"document.write(arr + "<br />")
document.write(arr.sort(sortNumber))   //麻烦重点解释下这句</script></body>
</html>这段JS中 他定义的sortNumber好像需要2个参数 但是实际执行的时候为什么没有参数的传入呢?
如果不用sortNumber这个方法 直接arr.sort()的话 好像是根据首数字的大小来排序的 排序会出现 1,10,1000,25,40,5  那么sortNumber中a-b是起到什么作用呢?新手学习JS 请各位高手教下 不胜感激~

解决方案 »

  1.   

    sort() 方法用于对数组的元素进行排序。语法
    arrayObject.sort(sortby)
    sortby 可选。规定排序顺序。必须是函数。 返回值
    对数组的引用。请注意,数组在原数组上进行排序,不生成副本。说明
    如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:•若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
    •若 a 等于 b,则返回 0。
    •若 a 大于 b,则返回一个大于 0 的值。
      

  2.   

    arr.sort(sortNumber),sortNumber是对这arr一组起作用的呀,所以不需要传递具体的2个参数进去sortNumber中a-b,表示arr中两个数相减,按数字大小来比较并决定排列顺序