`

JS 柯里化(Currying)

阅读更多
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title>JS 柯里化(Currying)</title>
</head>
<body>
<script type="text/javascript">
//f(x)和g(x)合成为f(g(x)),有一个隐藏的前提,就是f和g都只能接受一个参数。
//如果可以接受多个参数,比如f(x, y)和g(a, b, c),函数合成就非常麻烦。
//这时就需要函数柯里化了。所谓"柯里化",就是把一个多参数的函数,转化为单参数函数。

//群友(小硕)的解释
//柯里化是把一个有n个参数的函数变成n个只有1个参数的函数
//群友(Cloud)的解释
//柯里化一般都用到了闭包的,因为要访问上一次调用后返回在上一层函数中的变量
//群友(雕兄)的解释
//柯里化是把多参数函数变成一次只接受一个参数的函数

//柯里化之前
function add(x,y){
	return x+y;
}
console.info('柯里化之前:'+add(4,5));

//柯里化之后 , 这个也算 柯里化+闭包
function add2(x){
	return function(y){
		return x+y;
	};
}
console.info('柯里化之后:'+add2(4)(5));

//更深一些的柯里化,这个也算 柯里化+闭包
function add3(x){
    var sum = x;
    var tmp = function(y){
        sum = sum + y;
        return tmp;
    };
    tmp.toString = function(){
        return sum;
    };
    return tmp;
}
console.info('更深一些的柯里化:'+add3(4)(5)(6)(7)(8)(9));

//等于add3 = add3f
function add3f(x){
	return function(y){
		return function(z){
			return function(a){
				return function(b){
					return function(c){
						return x+y+z+a+b+c;
					};
				};
			};
		};
	};
}
console.info('add3 = add3f:'+add3f(4)(5)(6)(7)(8)(9));

//函数声明和函数表达式(fe)
//函数声明:function fn(){}; 
//函数表达式:var aaa = function fn(){}; var aaa = function(){};
//下面说说 匿名函数赋值给一个变量
//函数表达式的柯里化,这个也算 柯里化+闭包
var add4 = function(x){
	var sum = x;
    var tmp = function(y){
        sum = sum + y;
        return tmp;
    };
    tmp.toString = function(){
        return sum;
    };
    return tmp;
}
console.info('函数表达式的柯里化:'+add4(4)(5)(6)(7)(8));
</script>	
</body>
</html>

 

PS:群友(雕兄)的延伸拓展

柯里化的渊源应该是λ演算演算
λ演算演算里面只有一中数据类型,函数,这个函数只接受一个参数,也只返回一个参数
并且这个参数还是单值函数

 

效果图:

 

 

 

 

 

 

  • 大小: 8.3 KB
1
0
分享到:
评论

相关推荐

    2015-01-18-JS柯里化(currying)1

    JavaScript中的柯里化(Currying)是一种将接受多个参数的函数转换为一系列只接受一个参数的函数的技术。这种技术源自数学家哈斯凯尔·加里(Haskell Curry)的名字,他在函数组合理论中做出了重要贡献。在...

    详解JS中的柯里化(currying)

    JavaScript中的柯里化(Currying)是一种将接受多个参数的函数转换为接受单一参数的函数序列的技术,每个函数只接受一个参数并返回一个新的函数,直到所有参数都被传入并最终得到预期的结果。这一过程通常涉及函数的...

    ES6柯里化(展开运算符).js

    柯里化(Currying):柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术 通俗的讲:柯里化是一种将使用多个参数的一个函数转换成...

    深化解析JavaScript中函数的Currying柯里化_.docx

    JavaScript中的柯里化(Currying)是一种将接受多个参数的函数转换为接受单个参数的函数的技术,每次只处理一个参数,并返回一个新的函数以处理剩余的参数。这种技术源自数学家哈斯凯尔·加德纳·柯里,因此得名。...

    javascript实现函数柯里化与反柯里化过程解析.docx

    #### 一、函数柯里化 Currying ##### 1.1 概念定义 函数柯里化是一种将原本接收多个参数的函数转换成一系列接收单个参数的函数的技术。这种技术的核心在于,通过连续传递参数的方式,最终达到同样的计算目的。 ##...

    深化剖析JavaScript中的函数currying柯里化_.docx

    JavaScript中的函数柯里化(Currying)是一种将接受多个参数的函数转化为接受单一参数的函数序列的技术,每个函数返回一个新的函数,等待接收下一个参数。这一过程使得我们可以预先配置函数的一部分参数,然后在需要...

    【JavaScript源代码】JavaScript函数柯里化实现原理及过程.docx

    JavaScript函数柯里化是一种将原本接受多个参数的函数转换为接受单个参数的函数的技术,其核心在于将多步计算分解成一系列连续的单参数函数。这种技术源于数学家哈斯凯尔·加里(Haskell Curry)的名字,因此称为...

    【JavaScript源代码】怎样用Javascript实现函数柯里化与反柯里化.docx

    JavaScript中的函数柯里化(Currying)是一种将接受多个参数的函数转换成一系列接受单一参数的函数的技术。这种技术源自于数学家Haskell Brooks Curry的名字,它的主要思想是每次只处理一个参数,然后返回一个新的...

    JavaScript函数柯里化原理与用法分析

    函数柯里化(Currying)是函数式编程中的一个概念,它的核心思想是将多参数函数转换为一系列单参数函数。这个概念最初由数学家 Haskell Curry 提出,因此得名。在 JavaScript 中,函数柯里化可以让我们更灵活地控制...

    深入解析JavaScript中函数的Currying柯里化

    在JavaScript中,柯里化(Currying)是一种函数式编程技术,它允许我们将一个接受多个参数的函数转换为一系列使用单一参数的函数链。通过这种方式,柯里化可以提高函数的复用性,使得函数的灵活性大大增强。 柯里化...

    js代码-函数柯里化通用封装

    在JavaScript编程中,函数柯里化(Currying)是一种将接受多个参数的函数转换为一系列只接受一个参数的函数的技术。这种技术源自数学家哈斯凯尔·加德纳·柯里,因此得名。函数柯里化的主要优点是它可以提高代码的可...

    Javascript闭包与函数柯里化浅析_.docx

    柯里化(Currying)是一种将接受多个参数的函数转换为一系列接受单个参数的函数的技术。这些单参数函数返回的是一个新的函数,直到所有参数都被传入并执行原函数。通过柯里化,可以将复杂的功能分解为一系列简单的...

    深入剖析JavaScript中的函数currying柯里化

    在JavaScript中,函数currying,也称为柯里化,是一种将多参数的函数转换为一系列使用单一参数的函数的技术。它的目的是通过分步接收参数,逐步缩小函数的适用范围,最后返回一个最终结果。柯里化允许函数预先接收一...

    js代码-实现一柯里化函数

    JavaScript中的柯里化(Currying)是一种将接受多个参数的函数转换为接受单一参数并返回新函数的技术。这种技术源自数学家哈斯凯尔·加里...通过分析这些文件,我们可以学习到更多关于JavaScript柯里化实践的知识。

    js代码-函数柯里化demo

    JavaScript中的函数柯里化(Currying)是一种将接受多个参数的函数转化为接受单一参数的函数序列的技术。这个过程使得函数可以部分求值,即在调用时只传递部分参数,然后返回一个新的函数来等待接收剩余的参数。这种...

    javascript中利用柯里化函数实现bind方法_.docx

    JavaScript中的柯里化(Currying)是一种将接受多个参数的函数转换为接受单一参数的函数序列的技术,每个函数返回另一个函数,直到所有参数都被处理。这种方法允许我们在函数被调用时延迟执行,或者提前设置一些参数...

Global site tag (gtag.js) - Google Analytics