函数,不依赖执行的上下文,也不影响上下文的变量,输出只由输入决定
let b = 1
function unPure(a) {
return a + b
}
复制代码
let o = {}
function unPure(object) {
object.ex = 1
return object
}
复制代码
非常简单的demo,简单到你哦了一声,这么简单的概念呀。有个什么用呢
function pure(a) {
let b = 1
return a + b
}
复制代码
let o = {
state: 'pending'
first() {
let options = {
foo: 'bar'
}
this.two(options)
},
two(options) {
if (this.state === 'pending') {
return {...options, {foo: 'baz'}}
}
}
}
// 使two抽离出来,成为纯函数
function two(options) {
return {...options, {foo: 'baz'}}
}
let o = {
state: 'pending'
first() {
let options = {
foo: 'bar'
}
// 判断逻辑放在入口住,状态好统一管理
if (this.state === 'pending') {
this.two(options)
}
}
}
复制代码
更优美的理解我们使用的代码,更好的享受编程的乐趣,轻松的维护和调试你的代码。额外地说一下,使用纯函数与面向对象编程并无冲突。