<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>
这个程序的疑问:
1:sortNumber函数返回a-b是什么意思 
2:调用函数arr.sort(sortNumber)为什么没有参数

解决方案 »

  1.   

    sort函数 根据 比较函数sortNumber的返回值来确定两个元素的大小,即有等于0,小于0和大于0三种情况
    a-b就包含了这三种情况.
    sort的参数类型是函数指针,即sortNumber, 而不是对sortNumber()的调用,sortNumber的参数是预定义的。类似于OO编程中的接口.
      

  2.   

    数组的sort排序有两种方式:一个是无参数排序 ,这个时候按照数组元素的ascii码进行排序。
    另一个就是有参排序,这个参数就是一个比较函数,就像你举的例子一样,这个函数有两个参数,
    a-b的话 ,就是生序排列,用
    函数利用a-b得出数组元素的相对大小,大于0 则a元素就在b后面 小于在前面 。b-a的话就是降序排列了。
    arr.sort()会自动将数组元素按照默认方式排序,arr.sort(sortNumber)会将数组元素按照sortNumber函数提供的方式排序,只是一个引用 ,可以说是固定格式。