纯函数中的数组传播算子

时间:2016-05-20 12:10:44

标签: javascript redux pure-function

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

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中。

1 个答案:

答案 0 :(得分:1)

是的,pureFunc是纯粹的。 pureFunc内不会发生突变。

最常见和最基本的纯函数之一是身份函数:

let identity = x => x;

所以,如果我们传递一个对象,我们将得到相同的对象。我们可以在事实之后修改,但这不会使identity不纯,因为identity没有做突变。

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

  1. 在给定相同输入的情况下,它们总是产生相同的输出
  2. 它们不会引起副作用