首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >javascript函数是否具有可变状态的引用透明性?

javascript函数是否具有可变状态的引用透明性?
EN

Stack Overflow用户
提问于 2018-10-22 21:54:14
回答 1查看 407关注 0票数 0

Reading through this article on Javascript Functional Programming,它提到了引用透明度被定义为:

引用透明性:函数总是为相同的参数提供相同的返回值。这意味着函数不能依赖于任何可变状态。

IIUC Javascript函数满足这一要求,即使它们依赖于可变状态,因为两个函数即使同时运行也不能在共享状态下操作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-22 23:26:12

所以总结我们的讨论,是的,Javascript函数确实具有引用透明性,只要它们所依赖的可变状态不改变。

换句话说,当函数所依赖的可变状态保持不变时,将为相同的输入提供相同的输出。

这似乎有些显而易见,但对于Javascript和函数式编程来说,这是一个重要的概念/实现,因为Javascript不能同时在两个线程中运行函数。如果我们可以在函数运行时改变函数所依赖的状态,我们就可以创建难以推理的竞争条件,这将使函数结果不可预测,而这正是我们试图通过引用透明性来避免的。

例如,只要x不变,依赖于可变状态x的函数fn(5)将始终为相同的输入返回相同的结果。

在非Javascript环境中,可以在函数运行时更改x,因此两次调用fn(5)可能会返回不同的结果。

使用Javascript,如果fn(5)返回一个不同的结果,我们就知道原因了。这是因为在两次fn(5)调用之间更改了x

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52938276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档