浅析javascript高阶函数

Posted nDos

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅析javascript高阶函数相关的知识,希望对你有一定的参考价值。

   什么是高阶函数:在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数: 1、 接受一个或多个函数作为输入; 2、 输出一个函数。在数学中它们也叫做算子(运算符)或泛函。微积分中的导数就是常见的例子,因为它映射一个函数到另一个函数。在函数式编程中,返回另一个函数的高阶函数被称为柯里化的函数。

   显然 javascript 还有 python 都是拥有高阶函数特性的例子。为了看到高阶函数的特性,下面给出一个题目,编写一个 add 函数,能够满足以下计算能力:

   add(1)(2)(3)(4) // 返回10

   从题设来看显然 add(1) 返回的必然是一个函数,才能进行如上的链式调用。当然本题有些难度,难度在于最后需要返回一个数字,而根据前面的要求 add() 调用之后必须返回一个函数。本文的核心不在于讨论其实现方法,有兴趣的读者可自行研究,下面直接出给实现源代码:

var add = (function () {	
	var total=0;
	function ccc (v){
		total += v;
		return ccc;
	};
	ccc.valueOf = function(){
		var temp = total;
		total = 0;
		return temp;
	}
	return ccc;
})();

    通过上述例子可以看出,函数 ccc 通过返回函数本身,来达到链式调用的目的,这是高阶函数的特性之一,另外一个特性是将函数作为参数输入。

 

 

 

 

 

 

以上是关于浅析javascript高阶函数的主要内容,如果未能解决你的问题,请参考以下文章

js数组高阶方法reduce经典用法代码分享

js数组高阶方法reduce经典用法代码分享

浅析js中的纯函数高阶函数记忆函数偏函数

浅析js中的纯函数高阶函数记忆函数偏函数

JavaScript 高阶函数

JavaScript之手撕常用数组高阶函数