美文网首页
《javascript函数式编程指南》读书笔记二

《javascript函数式编程指南》读书笔记二

作者: 月半女那 | 来源:发表于2019-06-25 15:03 被阅读0次

第二部分函数基础部分

1. 轻数据结构,重操作

1.1. 控制流

控制流:程序为实现业务目标所要进行的路径
使用函数式开发其实就是将数据与控制流视为一些高级组件的简单链接

1.2. 链接方法

方法链式一种能够在一个语句中调用多个方法的面对对象编程模式。方法链又称方法级联

1.3. 函数链

函数式编程不是通过创建一个全新的数据结构类型来满足特定的需求,而是使用如数组这样的普通类型并施加在一套粗粒度的高阶操作之上。
设计思路

  • 接收函数作为参数,以便能够注入解决特定任务的特定行为
  • 代替充斥临时变量与副作用的传统循环结构,从而减少所要维护以及可能出错的代码
    lambda表达式(在js中成为箭头函数)
    高阶函数中
  • reduce:将一个数组中的元素精简为单一的值,该值是由每个元素与一个累积值通过一个函数计算得出的。reduce依赖于累计的结果而且还是一个会应用到所有元素的的操作,所以没有办法跳出循环
  • filter:在处理大数据的时候,往往需要删除部分不能不需要的数据,filter是一个能够遍历数组中的元素并返回一个新子集数组的高阶函数
function filter(arr, predicate) {
  let idx = -1,
    len = arr.length,
    result = [];
  while (++idx < len) {
    let value = arr[idx];
    if(predicate(value,idx,this)){ // 这里是指定this的作用域对象(window)
        result.push(arr[idx])
    }
  }
  return result
}

console.log(filter([1,2,3,4], a=> a>2)) // [3,4]
1.4. 代码推理

函数式的控制流能给个不需要研究任何内部细节的条件下提供该程序意图的清晰结构,这样可以知道数据在不同阶段式如何流入和流出的
函数式编程在理论上讲,无论是使用数组,链表,二叉树,还是其他数据结构,都不会改变程序原来的语义。所以函数式编程更关注于操作而不是数据结构

  • _.chain():1.可以添加一个输入对象的状态从而能够将这些输入转换为所需输出的操作连接在一起. 2. 可以创建具有惰性计算能力的复杂程序
_.chain
创建一个lodash包装实例,包装value以启用显式链模式。要解除链必须使用 _#value 方法。
let students = ['Rosser', 'Turing', 'Kleene', 'Church'];
const chain = _.chain(students).value()
console.log(chain) //[ 'Rosser', 'Turing', 'Kleene', 'Church' ]
  • _mixins: _.mixin([object=lodash], source, [options={}])
    添加来源对象自身的所有可枚举函数属性到目标对象。 如果 object 是个函数,那么函数方法将被添加到原型链上。
function voms(string){
    return _.filter(string, e=> /[aeiou]/i.test(e));
}

_.mixin({'voms':voms});

console.log(_.voms('fres')) // ['e']

递归定义的数据结构
节点是一种包含了当前值,父节点和子节点数组的对象。如果一个节点没有父节点则被称之为根节点
树是包含了一个根节点的递归定义的数据结构
函数式编程的关键
在操作不可变,无副作用的数据类型时,封装数据以控制其访问

相关文章

  • JavaScript函数式编程

    读完《JavaScript函数式编程》《JavaScript函数式编程指南》这两本书,对JavaScript函数式...

  • JavaScript函数式编程

    读完《JavaScript函数式编程》《JavaScript函数式编程指南》这两本书,对JavaScript函数式...

  • part1整理

    函数式编程:JavaScript函数式编程指南 异步编程:异步编程 Promise源码 JavaScript基础知...

  • Scala函数式编程(四)函数式的数据结构 下

    前情提要 Scala函数式编程指南(一) 函数式思想介绍 scala函数式编程(二) scala基础语法介绍 Sc...

  • Scala函数式编程(五) 函数式的错误处理

    前情提要 Scala函数式编程指南(一) 函数式思想介绍 scala函数式编程(二) scala基础语法介绍 Sc...

  • 《javascript函数式编程指南》读书笔记二

    第二部分函数基础部分 1. 轻数据结构,重操作 1.1. 控制流 控制流:程序为实现业务目标所要进行的路径使用函数...

  • JavaScript中的函数式编程

    JS 函数式编程指南 什么是函数式编程 简单说,"函数式编程"是一种"编程模型"(programming para...

  • Python函数式编程指南

    注:采转归档,自己学习查询使用 Python函数式编程指南(1):概述Python函数式编程指南(2):函数Pyt...

  • 5.纯函数

    理解JavaScript纯函数 函数式编程中有一个非常重要的概念叫纯函数,JavaScript符合函数式编程的范式...

  • javascript函数式编程

    参考书籍:《javascript 函数式编程》 什么是函数式编程? 函数式编程通过函数将值转换为抽象单元,接着用于...

网友评论

      本文标题:《javascript函数式编程指南》读书笔记二

      本文链接:https://www.haomeiwen.com/subject/hkdhqctx.html