纯函数:是这样一种函数,即相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用。
这样的纯函数好处便是可以进行缓存,称之为memorize,
只是下面的函数不够健壮
function memorize(fn) {
let cache = {}
return function () {
let arg_str = JSON.stringfy(arguments)
cache[arg_str] = cache[arg_str] || fn.apply(this, arguments)
return cache[arg_str]
}
}
let doubleX = memorize((x) => { return 2 * x })
doubleX(2) // 4
doubleX(2) // 4 从缓存中读取的
具体的Vue源码中的 cache 就运用了这种技术