JS中的函数式编程 === 垃圾
Open
黑
- Dominant language
- HTML
- Stars
- 464
- Forks
- 27
- PR merge metrics
- No merged PRs in 30d
Description
http://awardwinningfjords.com/2014/04/21/functional-programming-in-javascript-equals-garbage.html
标题有点耸人,但事实上很有意思的一篇短文。
总结:
1. 纯函数式要求避免副作用。而深拷贝会导致大量中间变量,这些中间变量是一次性的,马上就要被**垃圾**回收。
2. 没有尾递归优化,会很容易导致调用栈耗尽。如果用Trampolining,每次迭代都产生一个临时函数,于是又是一堆待回收的**垃圾**。
3. 函数compose和partial也导致每次调用产生中间变量(临时的参数数组和partial的函数),如果用大量的函数组合式编程,就产生一堆**垃圾**。
但是这文章也并不是说不要用函数式编程。应对上述问题的方法是:
1. 用Mori之类提供 immutable 数据结构的库。(应该是不需要每次做深拷贝,也许用原型来共享?)
2. 底层迭代用while/for循环——虽然不够函数式。
3. 此条文章没给出解决方法。其实这条就是讲创建闭包的代价,单纯函数组合本身并不是问题。
该文结论:**Never forget that Javascript hates you.**
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.