WEB开发网
开发学院网页设计JavaScript 函数式编程(javascirpt) 阅读

函数式编程(javascirpt)

 2010-09-14 13:44:24 来源:WEB开发网   
核心提示: 比如,定义一个函数,函数式编程(javascirpt)(2),输入两个参数,计算这两个数的平方和:function(x, y){ return add( expt(x, 2), expt(y, 2) ); }你可以将这个函数赋值给一个变量,可以被"实例化"成其他的函数,

比如,定义一个函数,输入两个参数,计算这两个数的平方和:

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);
    }
}

上一页  1 2 3 4 5  下一页

Tags:函数 编程 javascirpt

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接