成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從JS中學習函數式編程的五項支柱

開發 前端
本篇個大家介紹關于函數式編程的相關知識,希望對你有所幫助!

[[389312]]

 一、什么是函數式編程

從FP函數式編程的眼中看來,世界的萬事萬物就是處理數據流:

  1. input --> process -- output  

FP函數式編程是一種思維方式:

[[389313]]

比如非函數式,會這樣寫程序:

  1. > var name = "gaowei"
  2. > var greeting = "Hello,I'm ";; 
  3. > console.log(greeting + name
  4. Hello,I'm gaowei 

 而函數范式編程則會這樣寫程序:

  1. function greet(name) { 
  2. ... return "Hi, I'm " + name
  3. ... } 
  4. > greet("Gaowei"); 
  5. "Hi, I'm Gaowei" 

 二、用純函數 pure-function,避免 副作用 side-effects

舉例說明“非純函數”,

  1. > let name = "Gaowei"
  2. function greet() { 
  3. ... console.log("Hi, I'm " + name); 
  4. ... } 
  5. > greet() 
  6. Hi, I'm gaowei 

 這就不是一個純函數,因為沒有返回結果。

而純函數則是:

  1. function greet(name) { 
  2. ... return "Hi, I'm " + name
  3. ... } 

 三、使用高階函數 higher-order-function,函數本身可作為輸入或者輸出

在高階函數中,函數本身又可作為輸入與輸出。

  1. function setAdjectifier(adjective) { 
  2. ... return function(description) { 
  3. ..... return adjective + " " + description; 
  4. ..... } 
  5. ... } 
  6. > let greatifier = setAdjectifier("great"); 
  7. > greatifier("meeting"
  8. 'great meeting' 

 四、不要迭代,用 map, reduce 和 filter

map與filter之間的關聯與區別,可以參見下面這張圖:

五、不要更改輸入數據,用不可變更的數據結構

舉例,我們慣常的做法常常為:

  1. > let fruits = ['apple''banana''peach']; 
  2. > fruits[2] = 'orange' 
  3. 'orange' 
  4. > fruits 
  5. 'apple''banana''orange' ] 

 上面的mutation的處理方法,將會修改原始數據。

嘗試 functional-programming的方式為:

  1. > newFruits = fruits.map( rm => rm == "orange" ? "peach" : rm) 
  2. 'apple''banana''peach' ] 
  3. > fruits 
  4. 'apple''banana''orange' ] 

 而能夠高效處理 immutable 數據的常用庫為:Mori, immutable.js, Underscor, Lodash, Ramda 等。

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2009-10-09 09:24:19

軟件項目管理

2021-06-29 16:12:21

詞: 云架構混合云云計算

2022-05-12 15:43:08

數據安全數字化黑客

2010-09-30 14:51:02

保護數據安全

2010-09-09 13:15:59

提高VPN質量

2022-09-07 14:44:55

物聯網網絡安全

2020-03-16 08:48:18

Kubernetes容器云原生

2022-02-13 00:24:33

開發VueJavaScrip

2016-04-18 10:25:53

DevOps自動化

2023-06-27 10:21:14

2019-07-30 09:00:00

Snowflake數據庫性能調優

2017-04-12 22:19:20

2018-05-04 08:46:29

Node.js數據挖掘Azure

2023-03-02 08:47:31

IT預算熱點

2023-06-09 19:03:35

開源組織

2021-11-28 21:33:20

人工智能區塊鏈物聯網

2019-10-31 10:16:06

數據Python開發

2023-07-17 09:54:57

2016-12-20 09:29:15

開源文檔領域趨勢

2024-01-07 13:25:32

Go編程代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲a网| 久久久成人一区二区免费影院 | 91亚洲国产成人精品一区二三 | 日韩电影中文字幕在线观看 | 爱爱爱av| av香蕉| 91社区在线高清 | 亚洲精品在线免费看 | 欧美极品在线播放 | 成人动漫视频网站 | 日日干日日操 | 欧美久久精品 | 国产一区二区精品在线 | 97超碰站| 精产嫩模国品一二三区 | 国产精品美女久久久久久不卡 | 欧美日韩国产精品一区二区 | 一区二区视频免费观看 | www久久久| 人人精品 | 久久精品91久久久久久再现 | 老妇激情毛片免费 | 自拍偷拍亚洲一区 | 国产一区精品 | 人人干视频在线 | 国产精品毛片 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 激情黄色在线观看 | 欧美黑人体内she精在线观看 | 亚洲网址在线观看 | 国产成人jvid在线播放 | 中文字幕一区在线观看视频 | 91国产在线播放 | 欧美精品一级 | 久久中文字幕视频 | 国产在线91| av高清 | 一级黄色毛片 | 日韩综合在线 | 狠狠躁夜夜躁人人爽天天高潮 | 国产在线一区二区三区 |