gpt4 book ai didi

javascript - 高阶函数返回纯函数

转载 作者:行者123 更新时间:2023-12-02 22:54:06 26 4
gpt4 key购买 nike

下面是一个名为 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是常量并且没有内部状态(如类)时,返回的函数才可以被认为是纯函数。

最佳答案

使用this definition of Pure Function :

In computer programming, a pure function is a function that has the following properties:

  1. Its return value is the same for the same arguments (no variation with local static variables, non-local variables, mutable reference arguments or input streams from I/O devices).

  2. Its evaluation has no side effects (no mutation of local static variables, non-local variables, mutable reference arguments or I/O streams).

那么,functionA 并不总是返回纯函数。

这里有一种使用functionA的方法,这样它就不会返回纯函数:

let functionA = (customValue) => {
let value = customValue || 1;
return input => input * value;
};

class Mutater {
constructor() {
this.i = 0;
}
valueOf() {
return this.i++;
}
}

const nonPureFunction = functionA(new Mutater());

// Produces different results for same input, eg: not pure.
console.log(nonPureFunction(10));
console.log(nonPureFunction(10));

如您所见,当给定相同的输入 (10) 时,返回的函数会产生不同的结果。这违反了上述定义中的第一个条件(并且使用相同的技巧也可能违反第二个条件)。

关于javascript - 高阶函数返回纯函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51959041/

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