桂圆粥
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可以理解为数组下标,可是下标怎么能体现数组的值呢
sortNum()被传进去的时候其实是以“函数指针”的方式传进去的,因为在JS里面,函数也被当作对象处理,所以也是可以被当作参数传递的。也就是你传递了一个函数对象给array.sort()。
我觉得你想问的是既然没有传递那些元素进去,到底是怎么排序的。其实我们自定义的sortNum()被传入array.sort()之后,由array.sort()将数组里的元素两两传入sortNum()来进行大小比较,也就是说不需要我们手动传入数组元素。
不要乱理解! myarr.sort(sortNum) 相当于 myarr.sort(function sortNum(a,b) { return a -b;})。
至于为什么这样写,建议查看文档 es6关于该方法的解释
我的理解就是固定格式
我的理解,指的不是下标,而是ASCII码,a为97,b为98,a-b是指按ASCII码进行升序排列
a,b传递的应该不是下标而是数组内的元素,sort()排序是对数组内的元素进行排序,所以取出来比较的不是下标而是元素。
JavaScript进阶篇
468195 学习 · 21891 问题
相似问题