高阶函数(higher-order function)指操作函数的函数,一般地,有以下两种情况:
1、函数可以作为参数被传递
2、函数可以作为返回值输出
参数传递
把函数当作参数传递,代表可以抽离出一部分容易变化的业务逻辑,把这部分业务逻辑放在函数参数中,这样一来可以分离业务代码中变化与不变的部分。其中一个常见的应用场景就是回调函数
【回调函数】
在ajax异步请求的应用中,回调函数的使用非常频繁。想在ajax请求返回之后做一些事情,但又并不知道请求返回的确切时间时,最常见的方案就是把callback函数当作参数传入发起ajax请求的方法中,待请求完成之后执行callback函数
![](https://img.haomeiwen.com/i8793087/1114d1b33cb9fdf3.png)
回调函数的应用不仅只在异步请求中,当一个函数不适合执行一些请求时,也可以把这些请求封装成一个函数,并把它作为参数传递给另外一个函数,“委托”给另外一个函数来执行
返回值输出
相比把函数当作参数传递,函数当作返回值输出的应用场景也有很多。让函数继续返回一个可执行的函数,意味着运算过程是可延续的
下面是使用Object,prototype.toString方法判断数据类型的一系列的isType函数
![](https://img.haomeiwen.com/i8793087/8b3fd2abca241df6.png)
实际上,这些函数的大部分实现都是相同的,不同的只是Object.prototype.toString.call(obj)返回的字符串。为了避免多余的代码,可以把这些字符串作为参数提前传入isType函数。代码如下:
![](https://img.haomeiwen.com/i8793087/3e47378aa695a31a.png)
网友评论