频道栏目
读书频道 > web开发 > Javascript > JavaScript编程精解(原书第2版)
3.11 函数及其副作用
2015-12-04 15:05:48     我来说两句
收藏   我要投稿
《高级程序设计(第3版)》是 超级畅销书的**新版。ECMAScript 5 和HTML5 在标准之争中双双胜出,使大量专有实现和客户端扩展正式进入规范,同时也为 增添了很多适应未来发展的新特性。本书这一版除增加5 章  立即去当当网订购

我们可以将函数分成两类:一类调用后产生副作用,而另一类则产生返回值(当然我们也可以定义同时产生副作用和返回值的函数)。

在农场案例当中,我们调用第一个辅助函数printZeroPaddedWithLabel来产生副作用,打印一行文本信息。而在第二个版本中有一个zeroPad函数,我们调用它来产生返回值。第二个函数比第一个函数的应用场景更加广泛,这并非偶然。相比于直接产生副作用的函数,产生返回值的函数则更容易集成到新的环境当中使用。

纯函数是一种只会产生值而且不会影响它自己范围外任何事情的函数。比如说,纯函数不会读取可能被其他代码逻辑修改的全局变量。纯函数具备一项特质,即给出同样的参数值该函数总是求出同样的结果(除此之外,不会再执行任何其他操作)。这使得纯函数更加容易推导,我们可以使用函数调用的返回结果替代函数调用表达式,而不改变代码的语义。当不确定纯函数是否可以正确执行时,你只需调用它,如果函数可以在当前上下文中正确执行,那么就意味着它可以在任何环境中正确执行。非纯函数则会根据不同因素的影响返回不同的值,也会产生副作用,导致这类函数难以测试和推导。

尽管如此,我们也没有必要觉得非纯函数就不好,然后将这类函数从代码中删除。副作用常常是非常有用的。比如说,我们不可能去编写一个纯函数版本的console.log,但console.log依然十分实用。而在副作用的帮助下,有些操作则更易、更快实现,因此考虑到运算速度,有时候纯函数并不可取。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.10 添加新函数
下一篇:3.12 本章小结
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站