百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> JavaScript函数式编程中纯函数的懂得(代码)
分享文章到:

JavaScript函数式编程中纯函数的懂得(代码)

发布时间:09/01 来源:未知 浏览: 关键词:
本篇文章给大家带来的内容是关于JavaScript函数式编程中纯函数的懂得(代码),有必然的参照 价值,有需要的伴侣可以参照 一下,但愿对你有所帮忙。

函数式编程中纯函数怎样懂得?

概念: 不依靠施行的上下文,也不影响上下文的变量,输出只由输入决议

代码懂得一下

// 综上,非纯函数,输入依靠外部变量
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
}

纯函数的好处

信赖大家发明了,不管是概念还是代码懂得都很简便, 那为什么要使用纯函数呢? 下面我们排列一下使用纯函数的好处

  • 可缓存性
  • 可移植性
  • 可测试性
可缓存性

纯函数可以按照输入来做缓存

// 下面的代码我们可以发明雷同的输入,再第二次调取的时候都是直接取的缓存
let squareNumber  = memoize((x) => { return x*x; });
squareNumber(4);
//=> 16
squareNumber(4); // 从缓存中读取输入值为 4 的结果
//=> 16
squareNumber(5);
//=> 25
squareNumber(5); // 从缓存中读取输入值为 5 的结果
//=> 25

如何实现呢? 我们接着看下面的代码

const memoize = (f) => {
  const cache = {};
  return () => {
    var arg_str = JSON.stringify(arguments);
    // 关键就在这里,我们利用纯函数雷同输入雷同输出的逻辑,在这里利用cache做一个简便的缓存,当这个参数此前使用过时,我们马上返回结果就行
    cache[arg_str] = cache[arg_str] || f.apply(f, arguments);
    return cache[arg_str];
  };
};
可移植性

可移植性大白话过来就是,在任何一个地方都可以随便使用,A项目中使用过的,B项目想要使用直接拿过来就ok的那种

代码再来懂得一下

// 我们留意看下方有两个注册的函数

// 不纯的, 假如B项目想要用到这个函数,很明显我们将其依靠的其它效劳给搬过去
const signUp = function(attrs) {
  var user = saveUser(attrs);
  welcomeUser(user);
}
// 纯的, 我们再来看看下面这个纯函数写法,纯函数给了我们足够多的信息,我们想在B项目使用其功效只需将单个办法搬过去再给其注入需要的参数即可
const signUp = function(Db, Email, attrs) {
  return function() {
    var user = saveUser(Db, attrs);
    welcomeUser(Email, user);
  };
};
可测试性

综上所述,这个就很简便了,我们不需要关怀其它外部的信息,只需要给函数特定的输入,再断言其输出就好了

总结

  • 输出不依靠外部变量
  • 输出不改动外部变量
  • 牢固输入牢固输出
  • 可缓存,可移植,可测试

以上就是JavaScript函数式编程中纯函数的懂得(代码)的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板