hax / hax/hax.github.com

JS中的函数式编程 === 垃圾

Open
#14 0 comments 1 reaction 0 assignees View on GitHub
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.