前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【函数式编程】-纯函数

【函数式编程】-纯函数

作者头像
用户2845596
发布2021-01-21 15:09:53
5480
发布2021-01-21 15:09:53
举报
文章被收录于专栏:劝学劝学

纯函数是什么

函数,不依赖执行的上下文,也不影响上下文的变量,输出只由输入决定

看下几个不是纯函数的例子

  • 输出依赖外部变量
let b = 1
function unPure(a) {
    return a + b
}
复制代码
  • 输出改变外部变量
let o = {}
function unPure(object) {
    object.ex = 1
    return object
}
复制代码

纯函数的例子

非常简单的demo,简单到你哦了一声,这么简单的概念呀。有个什么用呢

function pure(a) {
    let b = 1
    return a + b
}
复制代码

纯函数的好处

  • 更有利于单元测试
  • 无副作用(side-effect),不会修改作用域外的值,使代码好调试
  • 执行顺序不会对系统造成影响
  • 剥离出业务逻辑,好复用

具体的例子

一个优化前的代码
let o = {
    state: 'pending'
    first() {
        let options = {
            foo: 'bar'
        }
        this.two(options)
    },
    two(options) {
       if (this.state === 'pending') {
           return {...options, {foo: 'baz'}}
       }
    }
}
优化后的代码
// 使two抽离出来,成为纯函数
function two(options) {
   return {...options, {foo: 'baz'}}
}
let o = {
    state: 'pending'
    first() {
        let options = {
            foo: 'bar'
        }
        // 判断逻辑放在入口住,状态好统一管理
        if (this.state === 'pending') {
            this.two(options)
        }
    }
}
复制代码

更优美的理解我们使用的代码,更好的享受编程的乐趣,轻松的维护和调试你的代码。额外地说一下,使用纯函数与面向对象编程并无冲突。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 纯函数是什么
  • 看下几个不是纯函数的例子
  • 纯函数的例子
  • 纯函数的好处
  • 具体的例子
    • 一个优化前的代码
      • 优化后的代码
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档