Penn000

JavaScript中的高阶函数

什么是高阶函数

• 将其他函数作为参数传递
• 将函数作为返回值

满足其中一个就是高阶函数

简单来说,就是一个函数可以操作其他函数,将其他函数作为参数或将函数作为返回值。

函数作为参数传递,回调函数在异步请求中用的非常多,使用者想要在请求成功后利用请求回来的数据做一些操作,但是又不知道请求什么时候结束。 

类似Ajax 这种操作非常适合用回调去做,当一个函数里不适合执行一些具体的操作,或者说不知道要怎么操作时,可以将相应的数据传递给另一个函数,让另一个函数来执行,而这个函数就是传递进来的回调函数。

另一个典型的例子就是数组排序。

在判断数据类型的时候最常用的是 typeof,但是 typeof 有一定的局限性,比如:

 

 

判断数组和对象都是输出 object,如果想要更细致的判断应该要使用Object.prototype.toString&nbsp ;

 

console.log(Object.prototype.toString.call([])); // 输出[object Array] console.log(Object.prototype.toString.call({})); // 输出[object Object]

 基于此,我们可以写出判断对象、数组、数字的方法:

 

function isObject(obj) { return Object.prototype.toString.call(obj) === '[object Object]'; } function isArray(arr) { return Object.prototype.toString.call(arr) === '[object Array]'; } function isNumber(number) { return Object.prototype.toString.call(number) === '[object Number]'; }

这三个方法差不多,我们可以做一些抽取

 

 

function isType(type) { return function (obj) { return Object.prototype.toString.call(obj) === '[object ' + type+ ']'; } } var isArray = isType('Array'); console.log(isArray([1,2]));

这个isType 方法就是高阶函数,该函数返回了一个函数,并且利用闭包,将代码变得优雅。

lodash中的使用

posted on 2020-12-14 10:46  忘事  阅读(70)  评论(0)    收藏  举报

导航