gpt4 book ai didi

javascript - 在 JavaScript 纯函数中使用外部数据/操作

转载 作者:行者123 更新时间:2023-11-30 12:12:05 25 4
gpt4 key购买 nike

根据我的理解,在其他函数中使用外部函数(不是回调)是完全可以的:

function a() {};

function b() {
a();
};

b 仍然可以称为纯函数,不是吗?

一些全局方法也是如此,例如:

function c() {
return Math.sqrt(4);
}

C 仍然被认为是纯方法,因为尽管 Math.sqrt 超出了 c 的范围,但 Math.sqrt 是一种纯方法。

一切都很好,但是当我像这样使用外部变量时:

window.isPlaying = false;

function d() {
return window.isPlaying;
}

然后它就变得不纯了,对吧?

而且...在新函数中使用不纯函数也会使这个新函数不纯,不是吗?

function e() {
return new Date().getTime();
}

我的推理没问题吗?

最佳答案

纯函数的定义规定,它必须为相同的输入返回相同的输出,并且它本身不能引起任何可观察到的副作用。如果函数受非局部变量的影响,或者尽管输入相同但返回不同的输出(如基于日期的计算的情况),则它是不纯的。

函数是否调用其他函数无关紧要。函数式编程的全部意义在于将函数组合成程序,因此调用其他函数是例程的一部分。

您的分析是正确的:只要一个函数是纯函数并且它调用的函数也是纯函数,它就是纯函数。单个不纯函数虽然会使它的调用者的整个链不纯。

关于javascript - 在 JavaScript 纯函数中使用外部数据/操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33473023/

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