Javascript 哪些副作用是由突变引起的?

Javascript 哪些副作用是由突变引起的?,javascript,functional-programming,immutability,side-effects,mutation,Javascript,Functional Programming,Immutability,Side Effects,Mutation,可变数据类型会产生副作用,但具体的副作用是什么?如何对其进行分组?到目前为止,我发现了两种影响: 竞争条件(由于异步计算/事件循环上下文中的单线程JS) 错误期望幂等性 第一点不言自明。然而,第二个问题需要澄清: constappend=xs=>ys=> (xs.取消移位(ys),xs); 常量为空=[]; 常数倍=f=>acc=>([x,…xs])=> x==未定义 ? 行政协调会 :f(折叠(f)(acc)(xs))(x); 常数xs=[1,2,3]; 常量main=折叠(附加)(空)

可变数据类型会产生副作用,但具体的副作用是什么?如何对其进行分组?到目前为止,我发现了两种影响:

  • 竞争条件(由于异步计算/事件循环上下文中的单线程JS)
  • 错误期望幂等性
第一点不言自明。然而,第二个问题需要澄清:

constappend=xs=>ys=>
(xs.取消移位(ys),xs);
常量为空=[];
常数倍=f=>acc=>([x,…xs])=>
x==未定义
? 行政协调会
:f(折叠(f)(acc)(xs))(x);
常数xs=[1,2,3];
常量main=折叠(附加)(空);
主(xs);

console.log(main(xs));//[1,2,3,1,2,3]
我可能遗漏了一些内容,但据我所知,这是一个太宽泛的问题,无法回答堆栈溢出问题。我不太确定这里的术语。“副作用”是相当广泛的,函数改变其作用域之外的可用数据这一事实本身就是副作用。虽然您可以将这些副作用描述为意外的非幂等性(??)引起的副作用,但最重要的往往是这些副作用,而不是缺少幂等性<代码>如果(折叠(附加)(空)(x.length>xs.length)启动导弹()。我们担心的可能是导弹,而不是
empty
@ScottSauyet的内容我想你是对的。我是rahter在寻找错误类,它是由突变副作用引起的,对吧?也许吧,但我担心你可能是在追求一个幻想。