函数式语言的定义是: 函数式语言会帮你消除副作用,不能消除时会控制副作用。
JavaScript 不是函数式编程语言(其实属于没有明确归类的语言,或者好听点叫“多范式语言”)。最明显的就是 this。这个隐含输入存在每一个函数里。特别不可思议的是 this 的含义改变的是那么任性。即使是 JavaScript 专家也会在定位 this 当前所指对象时遇到困难。从函数式的角度看,this 的神出鬼没应该算设计上的一个败笔。
但是可以使用 JavaScript 的函数式编程库(例如,Immutable.js),轻松将编程变成函数式风格
https://zhuanlan.zhihu.com/p/30332464
https://shiningdan.github.io/2018/01/30/Immutable-js-%E5%85%A5%E9%97%A8/