JS编程建议——67:套用函数

简介: 67:套用函数

建议67:套用函数
套用是JavaScript函数一个很有趣的应用。所谓套用就是将函数与传递给它的参数相结合,产生一个新的函数。在函数式编程中,函数本身也是一个值,这种特性允许用户以有趣的方式去操作函数值。例如,在下面代码中定义一个add()函数,该函数能够返回一个新的函数,并把参数值传递给这个新函数,从而实现连加操作。
var add = function(n){

return function(m){
    return n+m;
}

}
document.writeln(add(2)(3)); //5
当然,也可以为JavaScript扩展一个curry方法,实现函数的套用应用。
Function.prototype.method = function(name, func) {

if(!this.prototype[name]) {
    this.prototype[name] = func;
    return this;
}

};
Function.method('curry', function() {

var slice = Array.prototype.slice;
var args = slice.apply(arguments), that = this;
return function() {
    return that.apply(null, args.concat(slice.apply(arguments)));
};

});
curry方法通过创建一个保存原始函数和被套用函数的参数的闭包来工作。该方法返回另一个函数,该函数被调用时会返回调用原始函数的结果,并传递调用curry时的参数加上当前调用的参数的所有参数。curry使用Array的concat方法连接两个参数数组。但由于arguments数组并非一个真正的数组,所以它并没有concat方法,要避开这个问题,必须在两个arguments数组上都应用数组的slice方法,这样才会产生出拥有concat方法的常规数组。
下面就来应用curry方法,通过curry方法调用add函数,会返回一个新的函数add1,在这个新的返回函数中保存了调用add函数时传递的值,当调用add1函数时,将新旧函数的参数进行相加,返回7。
var add = function() {

var i, sum = 0;
for( i = 0; i < arguments.length; i += 1) {
    sum += arguments[i];
}
return sum;

};
var add1 = add.curry(2);
document.writeln(add1(3)); // 7

相关文章
|
2月前
|
存储 JavaScript 前端开发
JavaScript编程实现tab选项卡切换的效果+1
JavaScript编程实现tab选项卡切换的效果+1
|
4天前
|
JavaScript 前端开发 Java
[JS]同事:这次就算了,下班回去赶紧补补内置函数,再犯肯定被主管骂
本文介绍了JavaScript中常用的函数和方法,包括通用函数、Global对象函数以及数组相关函数。详细列出了每个函数的参数、返回值及使用说明,并提供了示例代码。文章强调了函数的学习应结合源码和实践,适合JavaScript初学者和进阶开发者参考。
14 2
[JS]同事:这次就算了,下班回去赶紧补补内置函数,再犯肯定被主管骂
|
3天前
|
前端开发 JavaScript 开发者
除了 Generator 函数,还有哪些 JavaScript 异步编程解决方案?
【10月更文挑战第30天】开发者可以根据具体的项目情况选择合适的方式来处理异步操作,以实现高效、可读和易于维护的代码。
|
9天前
|
自然语言处理 JavaScript 前端开发
JavaScript闭包:解锁编程潜能,释放你的创造力
【10月更文挑战第25天】本文深入探讨了JavaScript中的闭包,包括其基本概念、创建方法和实践应用。闭包允许函数访问其定义时的作用域链,常用于数据封装、函数柯里化和模块化编程。文章还提供了闭包的最佳实践,帮助读者更好地理解和使用这一强大特性。
11 2
|
17天前
|
JavaScript 前端开发
JavaScript 函数语法
JavaScript 函数是使用 `function` 关键词定义的代码块,可在调用时执行特定任务。函数可以无参或带参,参数用于传递值并在函数内部使用。函数调用可在事件触发时进行,如用户点击按钮。JavaScript 对大小写敏感,函数名和关键词必须严格匹配。示例中展示了如何通过不同参数调用函数以生成不同的输出。
|
19天前
|
存储 JavaScript 前端开发
JS函数提升 变量提升
【10月更文挑战第6天】函数提升和变量提升是 JavaScript 语言的重要特性,但它们也可能带来一些困惑和潜在的问题。通过深入理解和掌握它们的原理和表现,开发者可以更好地编写和维护 JavaScript 代码,避免因不了解这些机制而导致的错误和不一致。同时,不断提高对执行上下文等相关概念的认识,将有助于提升对 JavaScript 语言的整体理解和运用能力。
|
28天前
|
JavaScript 前端开发
js教程——函数
js教程——函数
24 4
|
27天前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
15 2
|
30天前
|
JavaScript 前端开发 Java
【javaScript数组,函数】的基础知识点
【javaScript数组,函数】的基础知识点
22 5
|
30天前
|
JavaScript 前端开发
Node.js 函数
10月更文挑战第5天
19 3