`
wyf
  • 浏览: 437996 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

柯里化函数

    博客分类:
  • JS
 
阅读更多
function curry(fn){
 var args = Array.prototype.slice.call(arguments, 1);
 return function(){
 var innerArgs = Array.prototype.slice.call(arguments);
 var finalArgs = args.concat(innerArgs);
 return fn.apply(null, finalArgs);
 };
} 

 Demo

function add(num1, num2){
 return num1 + num2;
}
var curriedAdd = curry(add, 5);
alert(curriedAdd(3)); //8 

 

function add(num1, num2){
 return num1 + num2;
}
var curriedAdd = curry(add, 5, 12);
alert(curriedAdd()); //17 

 函数柯里化还常常作为函数绑定的一部分包含在其中,构造出更为复杂的 bind()函数。例如:

 

function bind(fn, context){
 var args = Array.prototype.slice.call(arguments, 2);
 return function(){
 var innerArgs = Array.prototype.slice.call(arguments);
 var finalArgs = args.concat(innerArgs);
 return fn.apply(context, finalArgs);
 };
} 

 

var handler = {
 message: "Event handled",
 handleClick: function(name, event){
 alert(this.message + ":"+ name + ":"+ event.type);
 }
};
var btn = document.getElementById("my-btn");
EventUtil.addHandler(btn, "click", bind(handler.handleClick, handler, "my-btn")); 

 

分享到:
评论

相关推荐

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

    我们可以创建一个通用的柯里化函数,用于将任何多参数函数转换为接受单一参数的柯里化版本: ```javascript function curry(func) { const arity = func.length; return function curried(...args) { if (args....

    javascript中利用柯里化函数实现bind方法【推荐】

    • 柯里化函数主要起到预处理的作用; • bind方法的作用:把传递进来的callback回调方法中的this预先处理为上下文context; /** * bind方法实现原理1 * @param callback [Function] 回调函数 * @param context ...

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

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

    php代码-柯里化函数的使用

    3. **延迟计算**:如果某些参数不需要立即计算,柯里化函数可以保留中间结果,直到所有参数都给出后才执行计算。 在`main.php`文件中,可能包含了实现柯里化函数的示例代码。`README.txt`可能是对这些代码的解释或...

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

    下面是一个通用的柯里化函数封装示例: ```javascript function curry(func) { const arity = func.length; return function curried(...args) { if (args.length ) { return function() { return curried....

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

    柯里化函数的核心思想在于预先处理需要的参数,将它们保存在一个闭包中,然后返回一个接受剩余参数的新函数。在这个新函数中,先前保存的参数会与新提供的参数一起作用于原函数。柯里化的主要作用是将接受多个参数的...

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

    - **延迟计算**:如果调用柯里化函数时并未完全提供所有参数,则函数会缓存这些参数直到所有参数齐全后再执行。 - **参数复用**:当同一函数在多次调用中大部分参数相同的情况下,柯里化能够简化重复的参数传递过程...

    js代码-柯里化函数

    通常,它会解释如何将普通函数转换为柯里化函数,以及如何使用这些柯里化函数进行函数组合,以创建更复杂的逻辑。 柯里化在JavaScript中有多种用途,例如: 1. **提前绑定上下文**:柯里化函数可以提前绑定`this`...

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

    当我们传递一些参数给柯里化函数时,这个函数并不立即执行,而是返回一个新的函数,该新函数会接收剩余的参数,并最终执行原函数。通过这种方式,我们可以创建一个部分应用的函数,即一个函数固定了一些参数,而将...

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

    为了解决这个问题,可以编写一个通用的柯里化函数`curry`,它接受一个多参数函数并返回一个柯里化版本: ```javascript function curry(func) { return function curried(...args) { if (args.length >= func....

    前端JavaScript彻底弄懂函数柯里化curry.docx

    例如,对于正则表达式校验的需求,我们可以将校验逻辑封装为柯里化函数,然后根据不同场景组合不同的正则表达式和待校验字符串。 ```javascript function checkByRegExp(regExp) { return function (string) { ...

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

    首先,我们来看一个简单的柯里化函数的例子。假设有一个函数`add(a, b)`,用于计算两个数字的和。如果我们想要实现柯里化,可以这样做: ```javascript function curryAdd(a) { return function(b) { return a + ...

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

    为了使柯里化更加通用,我们可以创建一个柯里化函数`currying`,它接受一个函数`fn`作为参数,然后返回一个新的函数,这个新函数可以逐步接收参数直到所有参数都被提供。例如,如果我们想在累加之前对每个元素进行...

    JavaScript函数柯里化详解

    什么是柯里化 柯里化是这样的一个转换过程,把接受多个参数的...柯里化函数主要起到预处理的作用; bind方法的作用:把传递进来的callback回调方法中的this预先处理为上下文context; bind方法实现原理1代码如下所示:

    Swift中的函数柯里化 Function Currying

    Swift中的函数柯里化,是一种将多参数函数转化为一系列单参数函数的过程,使得函数可以逐步接收参数,并在所有参数提供完整之前返回一个新函数。这种技术源于数学家哈斯凯尔·伽罗瓦(Haskell Curry)的名字,因此被...

Global site tag (gtag.js) - Google Analytics