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

来源:7-22 数组排序sort()

桂圆粥

2019-03-06 16:55

<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可以理解为数组下标,可是下标怎么能体现数组的值呢

写回答 关注

5回答

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

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

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

    沈夜 回复小菜鸟工程师

    “sortNum()被传进去的时候其实是以“函数指针”的方式传进去的”,调用函数是需要加括号的,但是这里并不是调用函数,而是将函数传进去。你并没有调用sortNum()这个函数,你只是将它传递给别人调用。如果你要真正理解这个语法是怎么回事,你要搜索一下“函数指针”的知识

    2019-07-18 22:56:54

    共 2 条回复 >

  • 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()排序是对数组内的元素进行排序,所以取出来比较的不是下标而是元素。

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468195 学习 · 21891 问题

查看课程

相似问题