函数式编程 忘是亡心i 2023-06-06 12:22 16阅读 0赞 函数式编程的主要设计点在于避免使用状态和可变的数据,即 stateless and immutable。 RXJS:响应式编程抽象出了流这个概念,提高了代码的抽象级别,我们不用去关心大量的实现细节,而专注于对数据流的操作。 **目录** 参考 mutable & immutable 纯函数 redux状态管理方案 -------------------- ## 参考 ## https://www.imooc.com/article/70323 (主要看前面的关于编程思想的解说) [https://www.jianshu.com/p/3cf03ae2eac1][https_www.jianshu.com_p_3cf03ae2eac1] [https://juejin.im/entry/5adcc57bf265da0ba469613f][https_juejin.im_entry_5adcc57bf265da0ba469613f] ## mutable & immutable ## JS 中的对象是 mutable 可变的,新对象引用了原始对象,改变新对象将影响到原始对象。mutable data的数据结构有耦合,造成了数据难以被回溯的隐患。为了解决这个问题,一般的做法是使用 shallowCopy(浅拷贝)或 deepCopy(深拷贝)来避免被修改,但这样做造成了 CPU 和内存的浪费。immutable 可以很好地解决这些问题。 immutable Data 就是一旦创建,就不能再被更改的数据。对 immutable 对象的任何修改或添加删除操作都会返回一个新的 immutable 对象。immutable 实现的原理是 **Persistent Data Structure**(持久化数据结构),也就是使用旧数据创建新数据时,要保证旧数据同时可用且不变。同时为了避免 deepCopy 把所有节点都复制一遍带来的性能损耗,immutable 使用了 **Structural Sharing**(结构共享),即如果对象树中一个节点发生变化,只修改这个节点和受它影响的父节点,其它节点则进行共享。 数据不可变就是指这个数据一旦产生,它的值就永远不会变。JavaScript 中字符串类型和数字类型就是不可改变的,而对象基本都是可变的,可能会带来各种副作用。 ## 纯函数 ## 纯函数指的是执行结果由输入参数决定,参数相同时结果相同,不受其他数据影响,并且不会带来副作用(Side Effect)的函数。副作用指的是函数做了和本身运算返回值没有关系的事情,如修改外部变量或传入的参数对象,甚至是执行 console.log 都算是 Side Effect。前端中常见的副作用有发送 http 请求、操作 DOM、调用 alert 或者 confirm 函数等。满足纯函数的特性也叫做引用透明度(Referential Transparency)。 ## redux状态管理方案 ## Redux 不允许对数据层进行修改,只允许你通过一个 `Action` 对象来描述需要做的变更。在 Redux 中使用一个纯函数接收原 `state tree` 和 `action` 作为参数,并生成一个新的 `state tree` 代替原来的。 * *State(状态)* 是指单一不可变数据 * *Action(行为)* 描述状态的变化 * *Reducer(归约器/归约函数)* 根据先前状态以及当前行为来计算出新的状态。纯函数。 * ![显性定义的Action触发Reducer产生新的状态][Action_Reducer] [https_www.jianshu.com_p_3cf03ae2eac1]: https://www.jianshu.com/p/3cf03ae2eac1 [https_juejin.im_entry_5adcc57bf265da0ba469613f]: https://juejin.im/entry/5adcc57bf265da0ba469613f [Action_Reducer]: /images/20230601/93e22a69accc41f4a6cc61c65f3045f3.png
相关 函数式编程 函数式编程-Stream流 1. 概述 1.1 为什么学? 能够看懂公司里的代码 大数量下处理集合效率高 代码可读性高 消灭嵌套地狱 我不是女神ヾ/ 2023年10月15日 23:50/ 0 赞/ 90 阅读
相关 函数式编程 函数式编程的主要设计点在于避免使用状态和可变的数据,即 stateless and immutable。 RXJS:响应式编程抽象出了流这个概念,提高了代码的抽象级别,我们 忘是亡心i/ 2023年06月06日 12:22/ 0 赞/ 17 阅读
相关 函数式编程 原文地址:[http://www.defmacro.org/ramblings/fp.html][http_www.defmacro.org_ramblings_fp.html 蔚落/ 2022年08月09日 05:28/ 0 赞/ 243 阅读
相关 函数式编程 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念 对象是面向对象的第一型,那么函数式编程也是一样,函数是函数式编程的第一型 蔚落/ 2022年06月14日 05:07/ 0 赞/ 357 阅读
相关 函数式编程 > 原文链接:[https://github.com/EasyKotlin][https_github.com_EasyKotlin] 第8章 函数式编程(FP) > 分手后的思念是犯贱/ 2022年06月08日 08:38/ 0 赞/ 584 阅读
相关 函数式编程 什么是函数式编程 函数式编程是一种编程规范,常见的编程规范有命令式编程,函数式编程,逻辑式编程 ,常见的面向对象编程也是一种命令式编程。 命令式编程 :命令式编程是面向 ╰半橙微兮°/ 2022年05月30日 02:06/ 0 赞/ 266 阅读
相关 函数式编程 函数式编程 目前程序届分为两类编程:命令式和函数式,面向对象编程本身也是命令式编程的范畴. 函数式编程有两个最基本的运算:合成和柯里化。 合成 如下:compo 素颜马尾好姑娘i/ 2022年05月29日 02:15/ 0 赞/ 644 阅读
相关 函数式编程 函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设 傷城~/ 2022年05月18日 07:44/ 0 赞/ 313 阅读
相关 函数式编程 [函数式编程另类指南][Link 1] 原文链接:[Functional Programming For The Rest of Us][] 原文作者:Vyachesla 刺骨的言语ヽ痛彻心扉/ 2022年04月13日 10:46/ 0 赞/ 364 阅读
相关 函数式编程 面向对象编程,我想大家都很清楚了. 函数式编程是将函数本身作为处理对象的编程范式. 最常用的就是lambda(匿名函数),有木有印象!!! 而且在定义一个lambda的 水深无声/ 2021年06月24日 14:36/ 0 赞/ 579 阅读
还没有评论,来说两句吧...