Javascript编程头脑:纯函数

什么是纯函数?

1. 唯一效果

let 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) //[]

将一个函数重复实行,个中的值已被改变了,从而影响背面的函数操纵。一个纯函数是无论什么输入,都只对应输出一个唯一值。

2. 不接受外部状况

var min = 21;

// 不纯函数
var ckeck = function(age){
    return age >= min;
}

// 纯函数
var check = function(age){
    var min = 21;
    return age >= min;
}

3. 更清楚的表达

一个优异的纯函数应当具有可移植性/自文档化,即经由过程输入内容,就能够看出函数的企图。

// 不纯的
var signUp = function(attrs){
    一些副作用操纵
}
// 纯的
var signUp = function(Db, Email, attrs){
    return function(){
        ...一些副作用操纵
    }
}

长处:没有副作用

副作用指,在举行操纵的时刻,变动了原有数据的形状,从而影响了数据的纯洁性,关于此类数据应当安排在return内里。

副作用

  1. 变动文件体系
  2. 往数据库插进去纪录
  3. 发送一个 http 要求
  4. 打印/log
  5. DOM 查询

长处:可缓存性

采纳memoize手艺能够举行缓存。

var square = memoize(function(x){
    return x*x
})

square(4) //16
square(4) //从缓存中读取效果16
    原文作者:Kaso
    原文地址: https://segmentfault.com/a/1190000015711594
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞