《JavaScript ES6 函數式編程入門經典》筆記1

在圖書館翻書,看到這本今年出版,很薄的書,翻起來看了幾頁,感覺寫的通俗易懂,大概記錄一下。

  1. 什麼是函數是編程
    函數式編程技術主要基於 數學函數和它的思想
    數學中的函數有什麼特點?
    如f(X)=Y:
  • 函數必須總是接收一個參數
  • 函數必須總是返回一個值
  • 函數應該依據接收到的參數,而不是外部環境運行

JS 函數

var percnetValue = 5;
var calculateTax = (value) => {return value/100 * (100+ percnetValue)}

calculateTax函數,用數學中函數的定義分析,它依賴了全局變量percnetValue,因此在數學意義上就不能成爲一個真正的函數。
用數學函數的思想。重新寫一下這個函數

var calculateTax = (value, percnetValue) => {return value/100 * (100+ percnetValue)}

通過這個例子,我們定義一下函數式編程:
函數式編程是一種範式,是僅依賴輸入就可以完成自身邏輯的函數。

函數與方法的區別:
函數是一段可以通過其名稱被調用的代碼,可以傳遞參數並返回值
方法是一段必須通過其名稱及其關聯對象的名稱被調用的代碼

var simple = (a) => {return a}  //一個簡單的函數
simple(5) // 名稱調用

var obj = {simple: (a) => {return a}}  // 一個簡單的方法
obj.simple(5) // 名稱及其關聯對象調用
  1. 引用透明性
    根據函數的定義,可以得出結論,所有的函數對於相同的輸入都將返回相同的值。

  2. 命令式、聲明式、抽象

命令式:如何做
我們告訴編譯器“獲得長度,循環數組,用索引獲取每一個數組元素,等等”

var array = [1,2,3]
for(i=0,i<array.length;i++):
    console.log(array(i))

聲明式:做什麼
告訴編譯器做什麼,移除了如何做的部分

var array = [1,2,3]
array.forEach((element) => console.log(element))

函數式編程主張以抽象的方式創建函數,以利於重用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章