91精产品自偷自偷综合官网版下载-91精产品自偷自偷综合下-91精品-91精品91久久久-91精品成人-91精品成人www

網站建設資訊

NEWS

網站建設資訊

JavaScript函數式編程中純函數的案例分析-創新互聯

小編給大家分享一下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函數式編程中純函數的案例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯網站制作公司行業資訊頻道!


網頁名稱:JavaScript函數式編程中純函數的案例分析-創新互聯
網址分享:http://www.yuzhuanjia.cn/article/ipsoj.html
主站蜘蛛池模板: 丰满人妻妇伦又伦精品国产 | 国产91精品免费黄片 | 国产aⅴ无码久久丝袜美腿 国产aⅴ无码片毛片一级 | 99国产在线看片 | av无码人妻一区二区三区牛牛 | 91丝袜兔女郎羞羞软件 | 91精品久久久久精品电影免费在线 | av在线中文字幕不卡电 | 91九色老熟女免费 | av无码高潮喷水[烽火戏诸侯] | 99国产精品农村一级毛片 | av日韩人妻黑人综合无码 | 午夜福禁果tⅴ | 97色伦在色在线视频 | 高清无码视频在线播放 | 99久久精品无码一区二区毛 | 91精品国产99久久青草蜜桃 | 东京日韩人妻无码专区一本亚州最新 | 97精品人妻一区二区三区香蕉 | 午夜伦| 午夜理论片yy4080私人影院 | 91在线精品高清免费观看 | 爆乳女上位露脸 | 爆乳一丝丝不挂裸体大胸美女 | 91精品欧美综合在线 | av综合在线综合导航 | 91大神精品长腿在线 | 成人羞羞网站入口免费 | 按摩师玩弄到潮喷 | 变态的让你无法想象 | 97午夜理论电影影院 | av一区二区三区四区 | 91老司机精品福利在线 | 2025亚洲欧美国产日韩 | 91黄色视频| 午夜全免费一级毛片在线播放 | 91久久国产成人 | 国产91在线欧美无砖专区 | 91制片厂果冻传媒天美传媒 | 91在线免 | 91精品国产亚洲爽啪在 |