JavaScript 学习笔记十二 函数式编程风格

1//Util.js 2function abs(x){ return x>0?x:-x;} 3function add(a, b){ return a+b; } 4function sub(a, b){ return a-b; } 5function mul(a, b){ return a*b; } 6function div(a, b){ return a/b; } 7function rem(a, b){ return a%b; } 8function inc(x){ return x + 1; } 9function dec(x){ return x - 1; } 10function equal(a, b){ return a==b; } 11function great(a, b){ return a>b; } 12function less(a, b){ return a<b; } 13function negative(x){ return x<0; } 14function positive(x){ return x>0; } 15function sin(x){ return Math.sin(x); } 16function cos(x){ return Math.cos(x); } 17 18var logs = function (str) { 19 document.writeln(str + "<br>"); 20 } 21 22 // n*(n-1)*(n-2)*...*3*2*1 函数式编程风格 23 function factorial(n){ 24 return (function factiter(product,counter,max){ 25 //通过一个立即运行的函数 factiter,将外部的 n 传递进去,并立即参与计算,最终返回运算结果 26 if( great(counter,max)){ 27 return product; 28 }else { 29 return factiter(mul(counter,product),inc(counter),max); 30 } 31 })(1,1,n); 32 } 33 logs(factorial(8)) ; 34 //下面是简写,不用那么多的函数式 35 function factorial(x){ 36 return x == 0 ? 1:x * factorial(x-1); 37 } 38 39 //匿名函数,能不能进行递归操作 ----> Y-结合子 40 // 简单的方法来实现 Y-结合子: 41 var fact = function(x){ 42 return x == 0 ? 1 : x * arguments.callee(x-1); //arguments.callee 表示函数的调用者 43 } 44 logs(fact(10));
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

JavaScript 学习笔记十二 函数式编程风格 - HelloWorld