xs.slice(0, 3);
//=> [1,2,3]
xs.slice(0, 3);
//=> [1,2,3]
而 splice 却会嚼烂调用它的那个数组,然后再吐出来,这就会产生可观察到的副作用...,即原数组永久地改变了:
var xs = [1, 2, 3, 4, 5];
// 不纯的
xs.splice(0, 3);
//=> [1,2,3]
xs.splice(0, 3);
//=> [...另外,我们可以让 minimum 成为一个不可变(immutable)对象,这样就能保留纯粹性,因为状态不会有变化。...副作用包括但不限于:
更改文件系统
往数据库插入记录
发送一个 http 请求
可变数据
打印/log
获取用户输入
DOM 查询
访问系统状态
概括来讲,只要是跟函数外部环境发生的交互就都是副作用。...由于纯函数总是能够根据相同的输入返回相同的输出,所以能够保证总是返回同一个结果,这也就保证了引用透明性。