javascript函数式编程

常见的编程方式:命令式(面向对象,c java c#) 函数式 (Scheme) 逻辑式(Prolog语言,主要用于人工智能)

函数式编程的本质:一切皆是函数,函数可以作为另一个函数的输出或输入,一系列的函数使用最终形成一个表达式链,通过这个表达式链最终求得一个 值(函数式第一型,函数式运算元,函数式数据闭包)

javascript是基于对象的语言,但对象不是第一型,而函数式第一型,第一型指的的是基础类型,相当于元数据,是在语言中用来组织和声明其他类型的基础

表达式运算(连续运算 把命令转化为表达式   表达式中的函数)

   连续运算:(分支结构 三目 和 布尔 都可实现连续运算,循环结构,通过递归来实现连续运算)

                    var a=b=c=d=1;

                    event ? event:window.event    <=>if(event){event=evnet}else{event=window.event}

                    var a=(  (a===1)?alert(1):(a===2)?alert(2):(a===3)?alert(3):(a===4)?alert(4):alert(undefined) )

             <=>switch(a){ case 1:alert(1);  break ;  case 2:alert(2);break;  case 4:alert(3);break;  case 4:alert(4) break;  default:alert(undefined)}

                    <=>var a=( (a==1)&&alert(1)||(a==2)&&alert(2)||(a==3)&&alert(3)||(a==4)&&alert(4)||alert(undefined))

       alert( (function(x,y){return (x+y)/2})(10,20))

(function(){

     var  i=1;

  return function(){

    document.write(1);

     (++i<100)&&arguments.callee(); //有条件递归运算,小宇100执行递归

}

})()()

递归运算  (使用尾递归可以避免递归的消耗内存的问题)

  递归是函数对自身的调用  (递归调用+递归终止条件),有直接调用  和 间接调用两种方式, 需要结合 if语句来进行控制 

  文档树是一种递归的数据结构,使用递归计算指定节点所包含的全部节点数

闭包函数(闭包存储器,事件处理中闭包的应用,惰性求值,记忆,套用,模块化,柯里化,高阶函数)

    函数的嵌套结构,内部函数应该访问外部函数中声明的私有变量、参数或者其他内部函数

猜你喜欢

转载自blog.csdn.net/wenmin1987/article/details/82120155
今日推荐