函数式编程(javascirpt)
2010-09-14 13:44:24 来源:WEB开发网比如,定义一个函数,输入两个参数,计算这两个数的平方和:
function(x, y){ return add( expt(x, 2), expt(y, 2) ); }
你可以将这个函数赋值给一个变量,如下:
var func = function(x, y){ return add( expt(x, 2), expt(y, 2) ); }
然后,最神奇的是,下边这样:
func(3, 4);//这个表达式将返回25! 此时的func已经是一个函数了!
好了,简单的概述就此为止,下面我们看一些更高级的主题:高阶函数。
高阶函数
事实上,所有的有关函数式编程的文章必须要涉及到这个主题,这是因为,在命令式语言中,我们的抽象是根据"类"(这正是现在流行的OO的基本思想)来进行的,但是,在函数式编程中,没有办法表示类的概念,但是同样可以进行高级的抽象方式,使得一个函数更加泛化,可以被"实例化"成其他的函数,这个就是高阶函数。
来看个例子,我们有这样几种求和运算:
function intSum(a, b){
function inc(x){ return x + 1; }
function identity(x){ return x; }
if(a > b){
return 0;
}else{
return intSum(inc(a) , b) + identity(a);
}
}
function cubeSum(a, b){
function inc(x){ return x + 1; }
function cube(x){ return x * x * x; }
if(a > b){
return 0;
}else{
return cubeSum(inc(a) , b) + cube(a);
}
}
function piSum(a, b){
function piTerm(x){ return 1/((x+2)*x); }
function piNext(x){ return x+4; }
if(a > b){
return 0;
}else{
return piSum(piNext(a) , b) + piTerm(a);
}
}
Tags:函数 编程 javascirpt
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接