问答详情
源自:7-22 数组排序sort()

sortNum(a,b)这个函数使用的时候不应该传参吗?

<script type="text/javascript">
  function sortNum(a,b) {
  return a - b;
 //升序,如降序,把“a - b”该成“b - a”
}
 var myarr = new Array("80","16","50","6","100","1");
  document.write(myarr + "<br>");
  document.write(myarr.sort(sortNum));
</script>

不懂这个函数的意思,前面有人解释a,b可以理解为数组下标,可是下标怎么能体现数组的值呢

提问者:桂圆粥 2019-03-06 16:55

个回答

  • 沈夜
    2019-06-08 16:01:15

    sortNum()被传进去的时候其实是以“函数指针”的方式传进去的,因为在JS里面,函数也被当作对象处理,所以也是可以被当作参数传递的。也就是你传递了一个函数对象给array.sort()。

    我觉得你想问的是既然没有传递那些元素进去,到底是怎么排序的。其实我们自定义的sortNum()被传入array.sort()之后,由array.sort()将数组里的元素两两传入sortNum()来进行大小比较,也就是说不需要我们手动传入数组元素。

  • echo1203
    2019-05-30 18:06:16

    不要乱理解! myarr.sort(sortNum) 相当于 myarr.sort(function sortNum(a,b) { return a -b;})。

    至于为什么这样写,建议查看文档  es6关于该方法的解释

  • jalone
    2019-05-21 15:45:50

    我的理解就是固定格式

  • 规则君
    2019-04-02 22:35:05

    我的理解,指的不是下标,而是ASCII码,a为97,b为98,a-b是指按ASCII码进行升序排列

  • qq_慕盖茨8053647
    2019-03-09 10:54:36

    a,b传递的应该不是下标而是数组内的元素,sort()排序是对数组内的元素进行排序,所以取出来比较的不是下标而是元素。