为了账号安全,请及时绑定邮箱和手机立即绑定

js函数语法问题

( ╯□╰ ),小白问一下各位大大,这里的 return a - b 到底是嘛子个意思?

正在回答

4 回答

参考了一些资料跟大神们的解释,自己理解是这样的:

1,sort的入参是一个function
2,sort根据function的参数和返回值对数组进行排序。 

比如参数是a,b,他们就是数组里的俩元素,返回值大于0表示a排在b后面,这样a>b,a-b>0,a在b的后面,a>b升序;而a<b,b-a>0,a在b的后面,a<b降序。

看一下定义:

myArray.sort(sortMethod);

注意: 该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下: 

  若返回值<=-1,则表示 A 在排序后的序列中出现在 B 之前。
  若返回值>-1 && <1,则表示 A 和 B 具有相同的排序顺序。
  若返回值>=1,则表示 A 在排序后的序列中出现在 B 之后。

可能在函数内部还有一些算法,类似C语言的冒泡排序法,来真正实现升序跟降序的排序。

不知道理解的对不对,嘿嘿

  

2 回复 有任何疑惑可以回复我~
#1

慕粉1469604703

也可以这样 function sortNum(a,b) {return a-b;} //a大,a在b之后,升序 function sortNum(a,b) {return b-a;}//b大,a在b之后,降序
2016-09-01 回复 有任何疑惑可以回复我~
#2

墨小漓 提问者 回复 慕粉1469604703

thank you 思密达!谢谢你的耐心解答。(●'◡'●)看了你的解释,小白忽然有一种豁然开朗的感觉,真厉害。大大o(^▽^)o ,收小白做徒弟吧。
2016-09-02 回复 有任何疑惑可以回复我~
#3

墨小漓 提问者

thank you 思密达。
2016-09-02 回复 有任何疑惑可以回复我~
#4

慕粉1469604703 回复 墨小漓 提问者

我也是小白一枚,刚接触不久,一起学习哦!
2016-09-02 回复 有任何疑惑可以回复我~
#5

墨小漓 提问者 回复 慕粉1469604703

Yes,sir. (●'◡'●)小白遇小白,皮肤变更白。
2016-09-02 回复 有任何疑惑可以回复我~
查看2条回复

o(^▽^)o 哈哈,谢谢你们的耐心解答。

你们说的小白知道了。

( ╯□╰ ),小白要问的不是减法的问题。看下面这段代码。

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Array对象 </title>

<script type="text/javascript">

   function sortNum(a,b) {

   return a - b;

   }  //实现升序功能?这样写为什么就能实现升序功能

   function asortNum(a,b) {

       return b - a;

   } //实现降序功能?为什么能起到降序作用。

var myarr = new Array("80","16","50","6","100","1");

document.write(myarr.sort(sortNum)+"<br/>");

document.write(myarr.sort(asortNum));

</script>

</head>

<body>

</body>

</html>

这段代码实现了数组元素的升序和降序排列。关键是sort里面的函数起到了作用。可是那个函数为什么是这样写的。小白很不解。


0 回复 有任何疑惑可以回复我~
#1

imalwayshere

sort函数才是真正拿来排序的,sortNum是你自己给它的排序依据,sort内部根据你给的依据进行排序。sort内部可能用的是快速排序或者其他排序算法。这两个自己写的函数相当于你告诉他怎么排序,是大的放前面还是小的放前面。比如sortNum(a,b)接收两个参数,如果a更大,那么sort就会把a放在b的后面。
2016-08-31 回复 有任何疑惑可以回复我~
#2

墨小漓 提问者 回复 imalwayshere

o(^▽^)o,thank you 思密达。
2016-09-01 回复 有任何疑惑可以回复我~
#3

墨小漓 提问者 回复 卡兰尼克

我觉得sort会根据传入参数的不同来处理排序,如果参数是一个函数,sort函数会根据传入函数的返回值来进行相关处理。
2016-11-28 回复 有任何疑惑可以回复我~
#4

墨小漓 提问者 回复 卡兰尼克

加油!
2016-11-28 回复 有任何疑惑可以回复我~
查看2条回复

a,b 是数字参数 ,a-b就是简单减法运算

1 回复 有任何疑惑可以回复我~

就是返回 a减去b的值。

比如下面这个函数返回a与b的差:

function sub(a, b) {
    return a-b;
}

如果我们调用:

var result = sub(5, 3);
alert(result);

那么浏览器就会弹框显示一个数字2。

----

那么在这里也和上面的函数sub()一样,返回一个值。需要注意的是,如果函数返回值了,那么return语句后面的代码就不会被执行了。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468045    人
  • 解答问题       21891    个

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

进入课程

js函数语法问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信