0

在 Redux 教程中,他们大量使用数组扩展运算符来编写 reducer(必须是纯函数)。浏览以下脚本。

let a = {
  b : "ddff",
  c : "adxas"
}

let c = {
  b : "ssdds",
  c : "asdxasdsad"
}

let d = [];

d.push(a);
d.push(c);

console.log(d);

const pureFunc = (arr,b,c) => {
  return [...arr, { b , c}];
}

let n = pureFunc(d,"daaaa","sdadad");
console.log(n);
d[0].b = "Hello";
console.log(n)

函数“pureFunc”是否是一个适当的纯函数。数组 d 上的突变反映在对象 n 中。

4

1 回答 1

2

是的,pureFunc是纯洁的。突变不会发生在pureFunc.

最常见和最基本的纯函数之一是恒等函数:

let identity = x => x;

因此,如果我们传递一个对象,我们将返回相同的对象。我们可以在事后对其进行修改,但这不会变得identity不纯,因为identity没有进行突变。

基本上,纯函数只需要满足两个要求:

  1. 给定相同的输入,它们总是产生相同的输出
  2. 它们不会引起副作用
于 2016-05-20T12:17:22.370 回答