JavaScript中的高阶函数
什么是高阶函数
• 将其他函数作为参数传递
• 将函数作为返回值
满足其中一个就是高阶函数
简单来说,就是一个函数可以操作其他函数,将其他函数作为参数或将函数作为返回值。
函数作为参数传递,回调函数在异步请求中用的非常多,使用者想要在请求成功后利用请求回来的数据做一些操作,但是又不知道请求什么时候结束。
类似Ajax 这种操作非常适合用回调去做,当一个函数里不适合执行一些具体的操作,或者说不知道要怎么操作时,可以将相应的数据传递给另一个函数,让另一个函数来执行,而这个函数就是传递进来的回调函数。
另一个典型的例子就是数组排序。
在判断数据类型的时候最常用的是 typeof,但是 typeof 有一定的局限性,比如:
判断数组和对象都是输出 object,如果想要更细致的判断应该要使用Object.prototype.toString  ;
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中的使用
浙公网安备 33010602011771号