首页 > 解决方案 > 哪些类型的副作用是由突变引起的?

问题描述

可变数据类型会导致副作用,但具体有哪些副作用以及如何对它们进行分组?到目前为止,我发现了两种效果:

第一点是不言自明的。但是,第二个需要澄清:

const append = xs => ys =>
  (xs.unshift(ys), xs);

const empty = [];

const fold = f => acc => ([x, ...xs]) =>
  x === undefined
    ? acc
    : f(fold(f) (acc) (xs)) (x);
  
const xs = [1,2,3];

const main = fold(append) (empty);

main(xs);
console.log(main(xs)); // [1,2,3,1,2,3]

预期结果是[1,2,3],但该操作是非幂等的。

是否存在由可变数据类型引起的任何其他类型的副作用?由于这些副作用会造成很多麻烦,我认为了解您可能面临哪些副作用很重要。

标签: javascriptfunctional-programmingimmutabilityside-effectsmutation

解决方案


推荐阅读