【发布时间】:2018-08-22 02:19:32
【问题描述】:
这是一个名为 functionA 的高阶函数示例,它以 customValue 作为输入并返回一个函数,该函数获取输入并使用自定义值来详细说明结果:
let functionA = (customValue) => {
let value = customValue || 1;
return input => input * value;
};
以下是一些结果:
functionA()(4)
// => returns 4
functionA(2)(4)
// => returns 8
functionA(3)(4)
// => returns 12
functionA(4)(4)
// => returns 16
functionA返回的函数可以认为是纯函数吗?
更新:以上示例仅使用数字输入。正如@CRice 所描述的,只有当 customValue 是常量并且没有内部状态(如类)时,才能将返回的函数视为纯函数。
【问题讨论】:
-
社区中关于“纯”对函数意味着什么进行了健康、有意义的讨论。一个(过度?-)简化的定义是“没有副作用”——对函数范围之外的变量/状态没有影响,这会使函数在相同的输入下产生不同的效果。您的 functionA 绝对符合该标准。我说是的。
-
-
一些好心的人支持我的评论,但很明显我误解了这个问题。您没有问“函数A 是纯的吗?”,而是“由于函数A,函数A 返回的函数是否总是纯的?”正如其他人在下面回答的那样,我认为第二个问题的答案是“否”。
-
JS 中的谜题很难用many kinds of overloading available 解决。 (C++ 相同)
-
对于 OP:不要将答案编辑到问题中。如果您想回答,请发布答案。
标签: javascript higher-order-functions pure-function