码迷,mamicode.com
首页 > 其他好文 > 详细

函数式编程基本概念

时间:2018-09-02 23:57:34      阅读:288      评论:0      收藏:0      [点我收藏+]

标签:win   多个   的区别   输出   计算机   name   UNC   dom操作   数组   

编程范式

  • 命令式编程(Imperative)
  • 声明式编程(Declarative)
  • 函数式编程(Functional)

面向对象、泛型、元编程 也都是很主要的编程范式

命令式编程: 命令式编程的主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么

声明式编程: 声明式编程是以数据结构的形式来表达程序执行的逻辑

函数式编程: 函数式编程和声明式编程是有所关联的,因为他们思想是一致的:即只关注做什么而不是怎么做

针对“将数组元素的的每项变为原来的2倍” 体验命令式编程和声明式编程的区别

// 命令式编程
const double = (list) => {
  let result = []
  for (let i = 0; i < list.length; i++) {
    result[i] = 2 * i
  }
  return result
}

// 声明式编程
const list = []
const result = list.map(item => 2 * item)

头等函数(first-class function)

高阶函数(high-order function)

  • 接受一个或多个函数作为输入
  • 或输出一个函数

纯函数(pure function)

满足纯函数的条件:

  1. 函数的执行结果只依赖于它的参数
  2. 函数在执行过程里面没有副作用
const root = window
const reactive = (name => {
  console.log(name, root)
})

// reactive 不是纯函数,因为它的执行依赖函数的外部变量 root

DOM操作/数据库操作等具有副作用,因为它们改变了外部数据

纯函数的优点:

  • 可读性好
  • 代码可测
  • 易于复用

函数式编程基本概念

标签:win   多个   的区别   输出   计算机   name   UNC   dom操作   数组   

原文地址:https://www.cnblogs.com/gaollard/p/9575594.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!