纯函数

  • A+
所属分类:Web前端

纯函数

纯函数是这样一种函数,即相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用。

比如 slice 和 splice,这两个函数的作用并无二致——但是注意,它们各自的方式却大不同,但不管怎么说作用还是一样的。我们说 slice 符合纯函数的定义是因为对相同的输入它保证能返回相同的输出。而 splice 却会嚼烂调用它的那个数组,然后再吐出来;这就会产生可观察到的副作用,即这个数组永久地改变了。

var xs = [1,2,3,4,5]; // 纯的 xs.slice(0,3); //=> [1,2,3]  xs.slice(0,3); //=> [1,2,3]  xs.slice(0,3); //=> [1,2,3]   // 不纯的 xs.splice(0,3); //=> [1,2,3]  xs.splice(0,3); //=> [4,5]  xs.splice(0,3); //=> []