gpt4 book ai didi

javascript - JavaScript 函数是否具有可变状态的引用透明度?

转载 作者:行者123 更新时间:2023-12-03 00:53:45 25 4
gpt4 key购买 nike

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

Referential transparency: The function always gives the same return value for the same arguments. This means that the function cannot depend on any mutable state.

IIUC Javascript 函数即使依赖于可变状态也能满足此要求,因为即使两个函数同时运行也无法在共享状态上操作?

最佳答案

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

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

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

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

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

对于 Javascript,如果 fn(5) 返回不同的结果,我们确切地知道原因。这是因为 x 在调用 fn(5) 之间发生了变化。

关于javascript - JavaScript 函数是否具有可变状态的引用透明度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52938276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com