什么是函数的副作用——明白js编程中函数的副作用

访客4年前黑客资讯809

什么是函数副作用?

函数副作用是指当挪用函数时,除了返回函数值之外,还对主挪用函数发生附加的影响。副作用的函数不仅仅只是返回了一个值,而且还做了其他的事情,好比:

1、修改了一个变量
2、直接修改数据结构
3、设置一个工具的成员
4、抛出一个异常或以一个错误终止
5、打印到终端或读取用户输入
6、读取或写入一个文件
7、在屏幕上绘图


函数副作用会给程序设计带来不必要的贫苦,给程序带来十分难以查找的错误,而且降低程序的可读性,严酷的函数式语言要求函数必须无副作用。   


纯函数 ( Pure Function ) 

输入输出数据流全是显式(Explicit)的。 显式(Explicit)的意思是,函数与外界交流数据只有一个唯一渠道——参数和返回值。函数从函数外部接受的所有输入信息都通过参数通报到该函数内部。函数输出到函数外部的所有信息都通过返回值通报到该函数外部。

 

非纯函数 ( Impure Function ) 

与之相反。 隐式(Implicit)的意思是,函数通过参数和返回值以外的渠道,和外界举行数据交流。好比读取/修改全局变量,都叫作以隐式的方式和外界举行数据交流。

 

引用透明 ( Referential Transparent ) 

引用透明的观点与函数的副作用相关,且受其影响。 若是程序中两个相同值得表达式能在该程序的任何地方相互替换,而不影响程序的动作,那么该程序就具有引用透明性。它的优点是比非引用透明的语言的语义更容易明白,不那么艰涩。纯函数式语言没有变量,以是它们都具有引用透明性。 


以下示例说明晰引用透明与函数副作用的连系,代码如下:

result1 = (fun(a) + b) / (fun(a) -c); 
temp = fun(a); 
result2 = (temp + b) / (temp -c);


相关文章

重庆旅游局回应女子玩高空项目坠落

重庆旅游局回应女子玩高空项目坠落

随着人们生活水平的逐渐提高,大家经常会在假期中外出旅游来享受生活,而众多的游玩项目中,高空项目是比较受大家欢迎的,但近年来高空游玩项目发生意外也不在少数,前几天一名游客在重庆某公园玩高空项目时突然坠落...

小李子奥斯卡(小李子和凯特做过吗)

小李子奥斯卡(小李子和凯特做过吗) 近日,2020年奥斯卡的全部奖项提名名单终于正式公布。 在“最佳演员”的入围名单里,又一次出现了国内观众最熟悉的好莱坞巨星——莱昂纳多迪卡普里奥。...

光遇8月6日复刻先祖在哪张图 光遇8月6号先祖位置及解锁方法

光遇8月6日复刻先祖在哪张图 光遇8月6号先祖位置及解锁方法

光遇8月6日复刻先祖在哪张图?光遇本周复刻先祖将于8月6日12点降临天空王国,那么这位先祖会在什么地方刷新呢?玩家又该如何解锁他呢?下面就是光遇8月6号先祖位置及解锁方法了,小伙伴们一起来看看吧!...

破解别人微信号神器

在信息海量化、碎片化的今天,每个平台、每个领域都充斥着巨量信息,各大平台的热门、热点榜单,往往成为用户高效获取信息的优选。渠道多元而分散,热榜太多,难免给用户带来一定的选择困扰。洞察到用户的这一需求痛...

盗号黑客从哪里找-网络用语黑客是什么意思(黑客用手机挖矿是什么意思

黑客学什么手机号查一个人的姓名(知道手机号如何查姓名)2018年黑客到底发生了什么知道姓名地址怎么查电话(姓名地址电话大全)黑客怎么使自己的电脑上网的如何查询qq在线位置信息(qq共享位置信息)黑客虾...

怎么减腿(史上最强瘦腿小妙招,神速)

怎么减腿(史上最强瘦腿小妙招,神速)

大腿是脂肪最容易堆积的部位 尤其是大腿内侧最为严重 这两块顽固的肥肉 究竟要怎样才能甩掉? 自测:脂肪腿还是水肿腿? 用手指用力按在腿的肉厚部位(比如说大腿内侧、小腿膝盖下10~15cm...