<html><head><meta charset="utf-8"><title>javascript函数编程</title><meta name="keyword" content="javascript函数编程"><meta name="discription" content="javascript函数编程">
</head><body><script>javascript函数编程第二章 一等公民的函数用一个函数把另外一个函数包起来, 目的仅仅是延迟执行, 真的是非常糟糕的编程习惯.第三章 纯函数的好处好处:1 纯函数是这样一种函数, 即相同的输入, 永远会得到相同的输出, 而却没有任何可观察的副作用;2 使用纯函数的形式, 函数就能做到自给自足;副作用:1 在计算结果的过程中, 系统状态的一种变化, 或者与外部世界进行的可观察的交互更新文件系统往数据库插入数据发送一个http请求可变数据打印 / log获取用户数据DOM查询访问系统状态追求 "纯"的理由1 可缓存性var memoize = function(f) {var cache = {};return function() {var arg_str = JSON.stringify(arguments);alert(arg_str);cache[arg_str] = cache[arg_str] || f.apply(f, arguments);return cache[arg_str];}}var squreNumber = memoize(function(x) {return x * x;})squreNumber(4); //162 可移植性 / 自文档化3 可测试性4 合理性纯函数引用透明: 吐过一代代码可以替换成他执行所得的结果, 而且是在不改变整个程序行为的前提下替换的, 那么我们就说这段代码是引用透明的并行代码在服务端js环境以及使用了web worker的浏览器那里是非常容易实现的, 因为使用了线程(thread).不过出于对非纯函数复杂的奥绿, 当前主流观点还是避免使用这种并行slice(); //保留原数组不变splice(); //截取原数组,原数组改变第四章 柯里化 curry概念: 只传递函数一部分参数来调用它, 让他返回一个函数去处理剩下的参数.可以一次性的调用curry函数, 也可以每次只穿一个参数分多次调用function add(x, y) {return function(y) {return x + y;}}var a = add(1);a(2); //3只传给函数一部分参数通常也叫做局部调用, 能够大量减少样板文件的代码第五章 代码组合var compose = function(f, g) {return function(x) {return f(g(x));}}f, g都是函数, x式他们之间通过 "管道"传输的值.var toUpperCase = function(x) {return x.toUpperCase();}var exclain = function(x) {return x + "!";}var shout = compose(exclain, toUpperCase)shout("Hello");范畴学:是数学中的一个抽象分支, 能够形式化诸如集合论, 类型论, 群论, 以及逻辑学等数学分支中的一些概念.范畴学主要处理的对象, 态射和变化式.第六章 示例应用与命令式不同, 声明式意味着我们要写表达式, 而不是一步一步的指示//命令式var makes = [];for (i = 0; i < cars.length; i++) {makes.push(cars[i].make)}//声明式var makes = cars.map(function(car) {return car.make;})//命令式的循环要求你必须先实例化一个数组,而且执行完成这个实例化语句之后,解析器才继续执行后面的代码//命令式var authenticate = function(form) {var user = toUser(form);return login(user);}//声明式var authenticate = compose(login, touser);//虽然命令式的版本不一定就是错的,但是还是因编码了一种一步接着一步的执行方式.//而compose表达式只是简单的指出这么一个事实:用户验证是touser和login两个行为的//组合.这再次说明,声明式为代码更新提供了支持,是的我的应用代码成为了一种高级规范第七章 Hindley - Milner 类型签名类型签名补单可以用于编译时检测, 还是最好的文档.所以类型签名在函数式编程中扮演着非常重要的角色//strLength :: String ->Numbervar strLength = function(s) {return s.length;}//join:: String ->[String]->Stringvar join = curry(fucntion(what, xs) {return xs.join(what);})第八章 特百惠函数式程序: 通过管道吧数据在一系列纯函数之间传递的程序.这些程就是声明式的行为规范var Container = function(x) {this.__value = x;}Container.of = function(x) {return new Container(x);}//Container 作为一个容器,Container.of作为构造器第九章 Monadpointed functor关于容器的of方法, 不是用老避免使用new关键字, 而是用来把值放到默认最小化上下文中的.of没有真的取代构造器他是一个我们称之为pointed的重要接口的一部分//这里关键是把任意的值丢到容器里然后开始导出使用map的能力IO.of("tetris").map(concat("master"));//IO("tetris master");Maybe.of(1336).map(add(1));//Map(1337);Task.of([{ id: 2 }, { id: 3 }]).map(_.prop("id"));//Task([2,3]);第十章 Applicative functorap就是这样一种函数能够把一个functor的函数值应用到另一个functor的值上.Container.of(add(2)).ap(Container.of(3));Container(5);//all togrther nowContainer.of(2).map(add).ap(Container.of(3));//Container(5)//本例中的add是被map局部调用的,所以add必须是一个curry函数Container.prototype.ap = function(other_container) {return other_container.map(this.__value);}</script>
</body></html>

  总结:报告老板,在看懂之前我还能看{10,}遍

转载于:https://www.cnblogs.com/SunlikeLWL/p/8681253.html

读书笔记----javascript函数编程相关推荐

  1. 读书笔记——javascript闭包

    前几天有人问关于javascript的闭包的问题,这里,首先引用一下<JavaScript权威指南>第6版中第八章第6节的内容,里面讲得非常详细: 和其他大多数现代编程语言一样,JavaS ...

  2. 读书笔记-JavaScript高级程序设计(1)

    1.组合继承 (JavaScript 中最常用的继承模式 ) (position: page168) (书中定义了两个变量名 SuperType   SubType  乍一看 感觉不太能区分,我将改为 ...

  3. JavaScript权威指南读书笔记——JavaScript的扩展

    常量和局部变量 常量 声明常量需要使用关键字const,const关键爵var关键字行为非常类似,但const声明的是常量. 对常量重新赋值会失败,而对常量重新声明会报错. const pi = 3. ...

  4. 读书笔记-JavaScript面向对象编程(二)

    第5章 原型 5.1 原型属性(所有函数拥有一个prototype属性,默认为空对象) 5.1.1 利用原型添加方法和属性 function Gadget(name,color){this.name= ...

  5. [原]《Web前端开发修炼之道》-读书笔记CSS部分

    如何组织CSS-分层 应用 css 的能力分两部分:一部分是css的API,重点是如何用css控制页面内元素的样式:另一部分是css框架,重点是如何对 css 进行组织.如何组织 css 可以有多种角 ...

  6. 《JavaScript面向对象精要》读书笔记

    JavaScript(ES5)的面向对象精要 标签: JavaScript 面向对象 读书笔记 2016年1月16日-17日两天看完了<JavaScript面向对象精要>(参加异步社区的活 ...

  7. 《高性能JavaScript》(读书笔记)

    这次主要是对<高性能JavaScript>一书的读书笔记,记录下自己之前没有注意到或者需要引起重视的地方 第一章 加载和执行 js代码在执行过程中会阻塞浏览器的其他进程,比如用户界面的绘制 ...

  8. 《Javascript高级程序设计》读书笔记之对象创建

    <javascript高级程序设计>读过有两遍了,有些重要内容总是会忘记,写一下读书笔记备忘 创建对象 工厂模式 工厂模式优点:有了封装的概念,解决了创建多个相似对象的问题 缺点:没有解决 ...

  9. 《javascript面向对象编程指南》读书笔记

    <javascript面向对象编程指南>读书笔记 <javascript面向对象编程指南>读书笔记 第一章 面向对象的JavaScript 第二章 基本数据类型与流程控制 变量 ...

最新文章

  1. 人工智能产业化之路何去何从?清华博士、一流科技CEO在线分享,快来报名 | 量子位·视点...
  2. python中文昵称-python3随机生成中文字符(随机生成两字或三字的名字)
  3. 深度学习核心技术精讲100篇(五十七)- 自动驾驶车会看地图吗?它是如何认路、找准定位的?
  4. 网络编程应用:基于TCP协议【实现一个聊天程序】
  5. 用户登录查全表好还是用用户名好_外贸人/货代人不要为海运难过了:请看如何查运价和调配舱位解决缺箱!...
  6. JavaScript中的回调函数(callback)
  7. 小程序原生组件调用mpvue父组件方法
  8. 【MySQL】二进制分发安装
  9. 世界名着100部简介
  10. Java学习资料的汇总
  11. 步进电机正反转实验_三相异步电机正反转控制原理图
  12. iv值计算(含qcut细节)
  13. 关于word中如何生成自动目录以及页码编排
  14. 阿里 P7 到底该具备什么样的能力?
  15. arduino触须传感器使用方法
  16. 【Java】基础36:函数式编程
  17. Excel表数据很少,内存占用很大
  18. 【KEIL-MDK】系列——主题配色
  19. Linux杀掉挖矿病毒(qW3xT.2)
  20. 天空之门手游怎么用电脑玩 天空之门手游模拟器教程

热门文章

  1. CSS Overflow属性详解(转)
  2. javamail command not implemented
  3. Windowsw核心编程 第13章 Windows内存结构
  4. hdu4864 贪心
  5. 【数字信号处理】相关函数应用 ( 高斯白噪声 的 自相关函数 分析 )
  6. 【Java 泛型】泛型用法 ( 泛型编译期擦除 | 上界通配符 <? extends T> | 下界通配符 <? super T> )
  7. 【鸿蒙 HarmonyOS】Ability 中使用纯代码绘制布局及 UI 组件
  8. 【计算机网络】传输层 : TCP 拥塞控制 ( 慢开始 | 拥塞避免 | 快重传 | 快恢复 )
  9. centos 6.2用yum安装中文输入法
  10. python3.6+RF环境搭建