函数式编程的好处
一、什么是纯函数?
由上文可以知道,纯函数
就是对给定的输入返回相同的输出的函数。
纯函数遵守引用透明性
。
二、纯函数有哪些好处
2.1纯函数产生可测试的代码
不纯的函数可能会依赖外部环境,当函数可以运行,但难于测试。
var global = 'globalValue'
var badFunction = (value) => {
global = "changed";
return value* 2
}
而纯函数不改变任何外部环境的变量,即不依赖外部变量也不改变外部变量。
2.2合理的代码
通过纯函数开发者可以更加方便的阅读代码。便于理解和测试。
2.3并发代码
纯函数总是允许我们并发的执行代码。因为纯函数不会改变环境,这意味着不用担心同步问题!(虽然js是单线程,但特殊环境也会遇到多线程状况,如node)
2.4可缓存
由于纯函数总是为给定的输入返回相同的输出,那么我们就可以缓存函数的输出。例如已知一个longRunning是一个纯函数,那么对于多次调用该函数就可以避免重复计算,因为纯函数总是为给定的输入返回相同的输出
。
2.5管道与组合
纯函数因该被设计为只做一件事。很像Linux的命令,如grep搜索文件、cat打印文件内容。多个命令可以组合使用。
cat jsbook | grep -i "composing" | wc
函数也可以通过组合来使用。
数学中的函数
维基百科中:
函数在数学中为两不为空集的集合间的一种对应关系:输入值集合中的每项元素皆能对应唯一一项输出值集合中的元素。
Comments | 4 条评论
Warning: Undefined variable $m in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 1734
Warning: Trying to access array offset on value of type null in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 1734
Warning: Undefined variable $m in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 1734
Warning: Trying to access array offset on value of type null in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 1734
Warning: Undefined variable $ip1num in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 272
Warning: Undefined variable $ip2num in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 272
Warning: Undefined variable $ipAddr2 in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 344
Warning: Undefined variable $ipAddr1 in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 350
湖北省 广电网
晚安💤
Warning: Undefined variable $ip1num in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 272
Warning: Undefined variable $ip2num in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 272
Warning: Undefined variable $ipAddr2 in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 344
Warning: Undefined variable $ipAddr1 in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 350
湖北省 广电网
@yyy 明天会更好!
Warning: Undefined variable $m in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 1734
Warning: Trying to access array offset on value of type null in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 1734
Warning: Undefined variable $m in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 1734
Warning: Trying to access array offset on value of type null in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 1734
Warning: Undefined variable $ip1num in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 272
Warning: Undefined variable $ip2num in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 272
Warning: Undefined variable $ipAddr2 in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 344
Warning: Undefined variable $ipAddr1 in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 350
湖北省武汉市 电信
🌝🌝🌝
Warning: Undefined variable $ip1num in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 272
Warning: Undefined variable $ip2num in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 272
Warning: Undefined variable $ipAddr2 in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 344
Warning: Undefined variable $ipAddr1 in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 350
湖北省 广电网
@Senorita ❤
Warning: Undefined variable $return_smiles in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 1078
Warning: Undefined variable $robot_comments in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/comments.php on line 97