JavaScript函数式编程之副作用
更多相关内容见博客 github.com/zhuanyongxi… 概念: 副作用是在计算结果的过程中,系统状态的一种变化,或者与外部世界进行的可观察的交互。 上文中的纯函数的概念很严格,这个副作用的概念也是。它的要求很高,概括的讲,只要是跟函数外部环境发生的交互就都是副作用。从“副作用”这个词语来看,它更多的情况在于“改变系统状态”。 在教程中列举的一些副作用: 更改文件系统 往数据库插入记录 发送一个http请求 可变数据 打印/log 获取用户输入 DOM查询 访问系统状态 如果完全没有副作用,那我们的代码就是单纯的跑一遍浪费了一点电而已,除此之外什么都没有发生,这样的话我们写代码就没有意义了。所以,在JS中,我们的目的不是完全消除副作用注1,而是避免那些不应该出现的副作用。 JS原生的方法中,map就很函数式,他会返回一个新的数组,不会改变原数组。而pop这种方法就很不好,它在操作了数组之后,也改变数组本身。 所以当我们要使用那些有副作用的方法写纯函数的时候,记得做一次深拷贝: 例1 const myPop = x => { let [...y] = x; return ...