本文摘自PHP中文网,作者不言,侵删。
本篇文章给大家带来的内容是关于JavaScript函数式编程中纯函数的理解(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。函数式编程中纯函数如何理解?
概念: 不依赖执行的上下文,也不影响上下文的变量,输出只由输入决定
代码理解一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | let b = 1
function unPure(a) {
return a + b
}
let o = {}
function unPure(object) {
object.ex = 1
return object
}
function pure(a) {
let b = 1
return a + b
}
|
纯函数的好处
相信大家发现了,无论是概念还是代码理解都很简单, 那为什么要使用纯函数呢? 下面我们罗列一下使用纯函数的好处
可缓存性
纯函数可以根据输入来做缓存
1 2 3 4 5 6 7 8 9 10 | let squareNumber = memoize((x) => { return x*x; });
squareNumber(4);
squareNumber(4);
squareNumber(5);
squareNumber(5);
|
怎么实现呢? 我们接着看下面的代码
1 2 3 4 5 6 7 8 9 | const memoize = (f) => {
const cache = {};
return () => {
var arg_str = JSON.stringify(arguments);
cache[arg_str] = cache[arg_str] || f.apply(f, arguments);
return cache[arg_str];
};
};
|
可移植性
可移植性大白话过来就是,在任何一个地方都可以随意使用,A项目中使用过的,B项目想要使用直接拿过来就ok的那种
代码再来理解一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | const signUp = function (attrs) {
var user = saveUser(attrs);
welcomeUser(user);
}
const signUp = function (Db, Email, attrs) {
return function () {
var user = saveUser(Db, attrs);
welcomeUser(Email, user);
};
};
|
可测试性
综上所述,这个就很简单了,我们不需要关心其它外部的信息,只需要给函数特定的输入,再断言其输出就好了
总结
- 输出不依赖外部变量
- 输出不改变外部变量
- 固定输入固定输出
- 可缓存,可移植,可测试
以上就是JavaScript函数式编程中纯函数的理解(代码)的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
js中call、apply、bind的区别
javascript可以跳出函数吗
为什么把javascript文件放在html底部
javascript里的push方法有什么用
javascript如何实现删除提示信息
javascript定义变量写法
javascript如何捕获窗口关闭事件
js怎么格式化日期
javascript如何转换大小写
javascript如何给div设置高度
更多相关阅读请进入《javascript》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » JavaScript函数式编程中纯函数的理解(代码)