在圖書館翻書,看到這本今年出版,很薄的書,翻起來看了幾頁,感受寫的通俗易懂,大概記錄一下。編程
JS 函數數組
var percnetValue = 5; var calculateTax = (value) => {return value/100 * (100+ percnetValue)}
calculateTax函數,用數學中函數的定義分析,它依賴了全局變量percnetValue,所以在數學意義上就不能成爲一個真正的函數。
用數學函數的思想。從新寫一下這個函數函數式編程
var calculateTax = (value, percnetValue) => {return value/100 * (100+ percnetValue)}
經過這個例子,咱們定義一下函數式編程:
函數式編程是一種範式,是僅依賴輸入就能夠完成自身邏輯的函數。函數
函數與方法的區別:
函數是一段能夠經過其名稱被調用的代碼,能夠傳遞參數並返回值
方法是一段必須經過其名稱及其關聯對象的名稱被調用的代碼code
var simple = (a) => {return a} //一個簡單的函數 simple(5) // 名稱調用 var obj = {simple: (a) => {return a}} // 一個簡單的方法 obj.simple(5) // 名稱及其關聯對象調用
引用透明性
根據函數的定義,能夠得出結論,全部的函數對於相同的輸入都將返回相同的值。對象
命令式、聲明式、抽象索引
命令式:如何作
咱們告訴編譯器「得到長度,循環數組,用索引獲取每個數組元素,等等」element
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))
函數式編程主張以抽象的方式建立函數,以利於重用數學