JS 基础之-高阶函数(V客学院知识分享)
高阶函数英文叫Higher-order function,那什么叫高阶函数?
首先了解一个概念:JavaScript的函数其实都指向某个变量,函数的参数通常都是接收变量。那就可以把一个函数 a当成一个变量做为另一个函数b的参数。那么函数b 就是高阶函数。参考以下例子
function demo(arg){
Alert(“测试一下)
}
调用:demo (function(){}) , 那么 demo 就是一个高价函数
原生JAVASCRIPT 李 高价函数有四个 sort 、fiter 、 map/reduce
1.Sort ,排序算法。排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个对象呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。通常规定,对于两个元素x和y,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。
JavaScript的Array的sort()方法就是用于排序的,参考以下案例:
第二个排序把apple排在了最后,是因为字符串根据ASCII码进行排序,而小写字母a的ASCII码在大写字母之后。
第三个排序结果却有点意外。并不是我们想象中的 [1,2,10,20],这是因为Array的sort()方法默认把所有元素先转换为String再排序,结果'10'排在了'2'的前面,因为字符'1'比字符'2'的ASCII码小,具体可以参见ascll 码表。
2.filter .是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。
和map()类似,Array的filter()也接收一个函数。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。
例如,在一个Array中,删掉偶数,只保留奇数,可以这么写:

3.map,map()方法定义在JavaScript的Array中,map()传入的参数是pow,即函数对象本身。
所以,map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x2,还可以计算任意复杂的函数,比如,把Array的所有数字转为字符串:

4.reduce 。Array的reduce()把一个函数作用在这个Array的[x1, x2, x3...]上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算,其效果就是:[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)
比方说对一个Array求和,就可以用reduce实现:

(PHP开发、web前端、UI设计、VR开发专业培训机构--V客IT学院版权所有,转载请注明出处,谢谢合作!)

浙公网安备 33010602011771号