js柯里化
2016-06-19 14:41
489 查看
简单版:
function curring(x){
return function(y){
return x+y;
}
}
curring(1)(2) //3
缺点是参数个数是固定的,
高级点的:
function curring(){
var argList=Array.prototype.slice.call(arguments);
return function(){
if(arguments.length==0){
var sum=0;
var len=argList.length;
for(var i=0;i<len;i++){
sum+=argList[i];
}
return sum
}
else{
argList=argList.concat([].slice.call(arguments));
return arguments.callee
}
}
}
更高级的:
function curring(fn){
var argList=Array.prototype.slice.call(arguments,1);
return function(){
if(arguments.length==0){
fn.apply({},argList)//fn(argList)也可以,但传入的函数需要有一个参数接受argList变量
}
else{
argList=argList.concat([].slice.call(arguments));
return arguments.callee
}
}
}
function curring(x){
return function(y){
return x+y;
}
}
curring(1)(2) //3
缺点是参数个数是固定的,
高级点的:
function curring(){
var argList=Array.prototype.slice.call(arguments);
return function(){
if(arguments.length==0){
var sum=0;
var len=argList.length;
for(var i=0;i<len;i++){
sum+=argList[i];
}
return sum
}
else{
argList=argList.concat([].slice.call(arguments));
return arguments.callee
}
}
}
更高级的:
function curring(fn){
var argList=Array.prototype.slice.call(arguments,1);
return function(){
if(arguments.length==0){
fn.apply({},argList)//fn(argList)也可以,但传入的函数需要有一个参数接受argList变量
}
else{
argList=argList.concat([].slice.call(arguments));
return arguments.callee
}
}
}
相关文章推荐
- jsp基础
- JavaScript ES6新的类继承特性学习笔记
- JS数组
- zepto源码研究 - callback.js
- JS复合类型
- JSON-lib框架
- 【转】JSP中的9大隐藏对象
- JSON.stringify() 和 JSON.parse()
- DOM基础及应用(一)
- javaScript的三组成部分简介
- 利用Canvas+js实现贪吃蛇(2)
- 【JavaScript】Function函数
- createjs入门
- 【Javascript】——Cookie安全机制
- WebVR简介和常用资源链接
- js笔记
- 6、JSP语言基础之---JSP内置对象
- 如何用QUnit来测试JavaScript代码
- JS事件绑定和普通添加事件的区别
- js---javaScript九九乘法表演示、导入css的使用