天涯蝶舞
2016-07-09 22:05
如何理解函数 function sortNum(a,b) {return b-a;},这表示重写底层函数吗?另外document.write(myarr.sort(sortNum));中sortNum表示函数为什么不写成sortNum()呢?
<!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 b-a;
}
var myarr = new Array("80","16","50","6","100","1");
document.write(myarr.sort(sortNum));
</script>
</head>
<body>
</body>
</html>
关于sortNum()是否可以这样理解:以两个数为例a,b通过a-b判断a-b的差与1和-1的大小关系。sort()函数自带排序的方法 再利用sort()函数的判断依据( 若返回值<=-1,则表示 A 在排序后的序列中出现在 B 之前。
若返回值>-1 && <1,则表示 A 和 B 具有相同的排序顺序。
若返回值>=1,则表示 A 在排序后的序列中出现在 B 之后。)这样的话就把a和b排列好。当然多个的话,可以从左至右两两相比较!至于ortNum表示函数为什么不写成sortNum()呢?这个我也不清楚
sort( );括号中要有一个函数来确定排列顺序。 sortNum(a,b)就是这个确定排列顺序的函数。a,b不是参数,
在sort中直接写 sort(sortNum)就可以。 return a-b是升序,return b-a是降序。
function sortNum(a,b) {return b-a;},这表示重写底层函数吗也可以这么理解,因为 return b-a 表示重新排列数组里的顺序,document.write(myarr.sort(sortNum));中sortNum表示函数为什么不写成sortNum()呢?因为sort()的语法为: stringobject.sort(函数方法); 说明里面可以放方法 sortNum() 。
实际上代码可以写成:
1行 document.write(myarr.sort(function (a,b){
2行 return a - b;
3行 }))
而这里涉及到一个函数指针传递的问题(再次强调,是传递函数指针,而不是调用函数)。
假如定义 function test(){}; ,对于这个函数,test(即函数名)就是函数指针,test 指向函数主体。在实际些代码中,我们可以将函数名替换为一个匿名函数,即 function(){},也就是我上面的那种写法。
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题