javaScript函数柯里化
【摘要】 本文主要介绍JavaScript中的一种函数时编程方法–函数柯里化在正式开始之前,我们先来看一下下面的例子:function x (a , b , c){ let result = a + b + c ; return result ;}console.log(x(1 , 2 , 3)) // 6上面的函数,看上去没有任何问题,我们下面换一种代码方式来重构它!function fn1(...
本文主要介绍JavaScript中的一种函数时编程方法–函数柯里化
在正式开始之前,我们先来看一下下面的例子:
function x (a , b , c){
let result = a + b + c ;
return result ;
}
console.log(x(1 , 2 , 3)) // 6
上面的函数,看上去没有任何问题,我们下面换一种代码方式来重构它!
function fn1(a){
return function fn2(b) {
return function fn3(c) {
let result = a + b + c;
return result;
} } }
let resultOfA = fn1(1) ;
let result = resultOfA(2);
console.log(result(3)) // 6
上面的例子演示的就是函数柯里化,相信通过这里例子,隐隐约约有些理解了!如果没有,没关系,接下来我们来通过更多的示例来学习它!
什么是柯里化
函数柯里化是将JavaScript中有多个参数的函数重构成只有单个参数的函数的技术!
换句话说:当一个函数不是一次性接受所有参数,而是接受第一个参数并返回新函数,新函数接受第二个参数并返回新新函数!以此类推,知道所有参数都可以处理,这就成为函数柯里化!
优点
函数柯里化的好处是:当我们需要使用一些相同的参数调用相同的函数时,这里可以想象这样一个场景:假设我们要计算很多个高度长度相同但是宽度不同的长方体的体积,我们通过函数柯里化,只需要改变宽度就可以了!
在这种情况下,柯里化成为一种很好的技术!因为他们的代码很容易重构!同时函数柯里化有助于创建更高阶的函数。
如何在程序中使用
函数柯里化可以使用闭包或者javaScript中的bind方法来实现。
让我们使用这两种方式来实现函数柯里化
使用bind()方法
bind()返回要作用其函数的原始函数的副本,他接受两个参数,第一个是要引用的对象引用,第二个是都好分隔的参数列表!
function fn1(a){
return function fn2(b) {
return function fn3(c) {
let result = a + b + c;
return result;
} } }
let resultOfA = fn1(1) ;
let result = resultOfA(2);
console.log(result(3)) // 6
使用闭包
let multiply = (x,y) => {
return x*y ;
}
/* With the help of function closure we can convert it to the below function
syntax as */
let multiply = (x) => {
return function (y) {
console.log(x * y);
}
}
/* Because when the function is returned from multiply it will remember the value of x in its lexical scope using Function Closure, we
can use it as */
let multiplyByTwo = multiply(2);
multiplyByTwo(4) // 8
let multiplyByTen = multiply(10);
multiplyByTen(4) // 40
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)