365bet扑克官网_365bet手机网

当前位置:主页 > 28365365打不开 >
分析js功能的副作用
浏览: 发布日期:2019-07-02
分析js功能的副作用
更新:2011年8月23日22:54:54来自:我想发表评论
该函数的副作用是除了在调用函数时返回函数的值,主调用函数还具有其他效果。
例如,更改全局变量(函数外部的变量)或更改参数。
函数的副作用可能会导致程序设计中出现不必要的问题,程序很难找到错误,并且会降低程序的可读性。
严格的功能语言需要功能以避免副作用。
与函数的副作用有关的几个概念:PureFunction,ImpureFunction,ReferentialTransparent。
所有PureFunction输入和输出数据流都是显式的。
明确表示该函数使用单个唯一通道与外部交换数据:参数和返回值。
函数从函数外部接收的所有输入信息都通过参数传递给函数。
函数在函数外部发送的所有信息都通过返回值从函数传递。
不纯的功能(ImpureFunction)恰恰相反。
隐式意味着该函数通过参数和返回通道与外部交换数据。
例如,读取/更改全局变量称为与外部世界的隐式数据交换。
ReferentialTransparent的概念是相关的,并受到函数副作用的影响。
如果程序中的两个相同表达式可以替换为程序的任何部分而不影响程序的行为,则程序具有引用透明性。
优点是它比不引用的,不那么令人尴尬的透明语言的含义更容易理解。
纯函数式语言没有变量,因此它们都具有引用透明性。
以下示例显示了参考透明度和功能副作用的组合。复制代码如下。result1 =(fun(a)+ b)/(fun(a)-c); temperature = fan(a)。结果2 =(温度+ b)/(温度?℃)。如果函数没有副作用,则result1和result2是相同的。
但是,如果fun有副作用(例如将b或c添加到1),则result1和result2将不相同。
因此,副作用违反了参考透明度。
在JavaScript中,引入了函数。
但显然,JS函数可以访问和更改全局变量(或在函数外部定义的变量)。复制代码如下:functionfun(){a = 10;}fun(); 10JS只能依赖程序员的习惯来确保函数没有副作用。也就是说,它们使用参数操作而不改变函数的输入。此函数不会更改函数外部的变量,例如全局变量3。操作的结果通过函数(导出)返回到外部。


  • 上一篇:公关经理是什么意思?
  • 下一篇:没有了