📜  JavaScript 中的纯函数

📅  最后修改于: 2022-05-13 01:56:34.953000             🧑  作者: Mango

JavaScript 中的纯函数

纯函数是一个函数(代码块),如果传递相同的参数,它总是返回相同的结果。它不依赖于任何状态,也不依赖于程序执行期间的数据变化,而只依赖于其输入参数。

此外,纯函数不会产生任何可观察到的副作用,例如网络请求或数据突变等。

让我们看看下面的 JavaScript函数:

function calculateGST( productPrice ) {
    return productPrice * 0.05;
}

如果我们传递相同的 productPrice,上述函数将始终返回相同的结果。换句话说,它的输出不受任何其他值/状态变化的影响。所以我们可以将“calculateGST”函数称为纯函数。

现在,让我们看看下面的另一个函数:

var tax = 20;
function calculateGST( productPrice ) {
    return productPrice * (tax / 100) + productPrice;
}

稍等片刻,你能猜出上面的函数是不是纯函数吗?

耶耶!你说的对!它不是一个纯函数,因为输出取决于外部变量“税”。因此,如果税值以某种方式更新,那么尽管我们将相同的 productPrice 作为参数传递给函数,但我们将得到不同的输出。

但在这里我们需要做一个重要的说明:

注意:如果纯函数调用纯函数,这不是副作用,调用函数仍被视为纯函数。 (示例:在函数中使用 Math.max())

以下是函数不应该产生的一些副作用(但不限于),以便被视为纯函数-

  • 发出 HTTP 请求
  • 变异数据
  • 打印到屏幕或控制台
  • DOM 查询/操作
  • 数学随机()
  • 获取当前时间