麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > JavaScript > 正文

Javascript函數式編程簡單介紹

2024-05-06 16:24:34
字體:
來源:轉載
供稿:網友
什么是函數式編程?根據百度百科的描述,“函數式編程是種編程典范,它將電腦運算視為函數的計算。函數編程語言最重要的基礎是 λ 演算(lambda calculus)。而且λ演算的函數可以接受函數當作輸入(參數)和輸出(返回值)。”
 

幾十年來,函數式編程一直是計算機科學狂熱者的至愛,由于數學的純潔性和謎一般的本質, 它被埋藏在計算機實驗室,只有數據學家和有希望獲得博士學位的人士使用。但是現在,它正經歷一場復興, 這要感謝一些現代語言比如Python,Julia,Ruby,Clojure以及——但不是最后一個——Javascript。

你是說Javascript?這個WEB腳本語言?沒錯!

Javascript已經被證明是一項長期以來都沒有消失的重要的技術。這主要是由于它擴展的一些框架和庫而使其具有重生的能力, 比如backbone.js,jQuery,Dojo,underscore.js等等。這與Javascript函數式編程語言的真實身份直接相關。 對Javascript函數式編程的理解很重要,并且在相當長的一段時間會對各種水平的程序員很有用。

為什么呢?函數式編程非常強大、健壯并且優雅。它對于大型數據結構非常有用并且高效。 Javascript作為一個客戶端腳本語言,在應對日益復雜的網站時,函數式地操作DOM、 組織API響應以及完成一些其它任務會非常有好處。

在這本書里,你將會學習用Javascript進行函數式編程所需要知道的一切:如何用函數式編程構建你的Javascript web應用, 如何解鎖Javascript隱藏的力量,如何編寫更強大的代碼,并且由于程序更小,使得代碼更容易維護,能夠更快被下載, 并且花費更少的開支。你還會學到函數式編程的核心概念,以及如何將它們應用到Javascript, 還有將Javascript作為函數式語言時如何回避一些問題,如何在Javascript中混合使用函數式編程和面向對象編程。

不過在我們開始前,先來做個實驗。

例子

也許快速舉個例子是介紹Javascript函數式編程最好的方式。我們將用Javascript完成一些任務—— 一個使用傳統、原生的方法,另一個使用函數式編程。然后我們將會比較這兩種方法。

應用——一個電子商務網站

為了追求真實感,我們來做一個電子商務網站,一個郵購咖啡豆的公司。這個網站會銷售好幾種類型的咖啡, 有不同的品質,當然也有不同的價格。

命令式方法

首先,我們開始寫程序。為了讓這個例子接地氣,我們需要創建一些對象來保存數據。如果需要的話我們可以從數據庫里取值。 但是現在我們假設他們是靜態定義的: 
 

  1. // create some objects to store the data. 
  2. var columbian = { 
  3. ? name: 'columbian'
  4.  basePrice: 5 
  5. }; 
  6. var frenchRoast = { 
  7.  name: 'french roast'
  8.  basePrice: 8 
  9. }; 
  10. var decaf = { 
  11.  name: 'decaf'
  12.  basePrice: 6 
  13. }; 
  14. // 我們將使用輔助函數計算價格 
  15. // 根據size打印到一個HTML的列表中 
  16. function printPrice(coffee, size) { 
  17.  if (size == 'small') { 
  18.   var price = coffee.basePrice + 2; 
  19.  } 
  20.  else if (size == 'medium') { 
  21.   var price = coffee.basePrice + 4; 
  22.  } 
  23.  else { 
  24.   var price = coffee.basePrice + 6; 
  25.  } 
  26.  // create the new html list item 
  27.  var node = document.createElement("li"); 
  28.  var label = coffee.name + ' ' + size; 
  29.  var textnode = document.createTextNode(label+' price: $'+price); 
  30.  node.appendChild(textnode); 
  31.  document.getElementById('products').appendChild(node); 
  32. // 現在我們只需根據咖啡的各種價格和size的組合調用printPrice函數 
  33. printPrice(columbian, 'small'); 
  34. printPrice(columbian, 'medium'); 
  35. printPrice(columbian, 'large'); 
  36. printPrice(frenchRoast, 'small'); 
  37. printPrice(frenchRoast, 'medium'); 
  38. printPrice(frenchRoast, 'large'); 
  39. printPrice(decaf, 'small'); 
  40. printPrice(decaf, 'medium'); 
  41. printPrice(decaf, 'large'); 
?
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品国产乱码一区二区 | 欧美一级免费在线观看 | 国产成年人视频 | 亚洲第一色片 | 手机免费看一级片 | 狠狠干夜夜操 | 91久久夜色精品国产网站 | jizzjizz中国人少妇中文 | 在线观看视频毛片 | 日本不卡视频在线观看 | 中文字幕观看 | 国产成人77亚洲精品www | 欧美性生活久久 | 国产羞羞视频在线观看 | 亚洲无毛av | 高清一区二区在线观看 | 激情网站视频 | 国产妇女乱码一区二区三区 | 国产91免费看 | 成人视屏网站 | 欧美色另类 | 黄色视频a级毛片 | 国外成人在线视频 | 欧美在线成人影院 | 毛片在线免费播放 | 红杏网站永久免费视频入口 | 亚洲性一区 | 中文字幕综合在线观看 | 中韩毛片 | 国产一级一片免费播放 | 欧美性生交大片 | 欧美成人性生活 | 成人国产精品久久 | 久久精品一区二区三区四区五区 | 91精品国产综合久久婷婷香蕉 | 久久精品视频网址 | bt 自拍 另类 综合 欧美 | 国产成人精品网站 | 亚洲精品欧美在线 | 一级黄色av电影 | 国产精品视频导航 |