国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

JavaScript與函數式編程解釋

2024-09-06 12:42:32
字體:
來源:轉載
供稿:網友
作者:月影
牢記:函數式編程不是用函數來編程!!!
23.4函數式編程 
23.4.1 什么是函數式編程

        什么是函數式編程?如果你這么直白地詢問,會發現它竟是一個不太容易解釋的概念。許多在程序設計領域有著多年經驗的老手,也無法很明白地說清楚函數式編程到底在研究些什么。函數式編程對于熟悉過程式程序設計的程序員來說的確是一個陌生的領域,閉包(closure),延續(continuation),和柯里化(currying)這些概念看起來是這么的陌生,同我們熟悉的if、else、while沒有任何的相似之處。盡管函數式編程有著過程式無法比擬的優美的數學原型,但它又是那么的高深莫測,似乎只有拿著博士學位的人才玩得轉它。

        提示:這一節有點難,但它并不是掌握JavaScript所必需的技能,如果你不想用JavaScript來完成那些用Lisp來完成活兒,或者不想學函數式編程這種深奧的技巧,你完全可以跳過它們,進入下一章的旅程。

        那么回到這個問題,什么是函數式編程?答案很長……

函數式編程第一定律:函數是第一型。

        這句話本身該如何理解?什么才是真正的第一型?我們看下面的數學概念:

        二元方程式 F(x, y) = 0,x, y 是變量, 把它寫成 y = f(x), x是參數,y是返回值,f是由x到y的映射關系,被稱為函數。如果又有,G(x, y, z) = 0,或者記為 z = g(x, y),g是x、y到z的映射關系,也是函數。如果g的參數x, y又滿足前面的關系y = f(x), 那么得到z = g(x, y) = g(x, f(x)),這里有兩重含義,一是f(x)是x上的函數,又是函數g的參數,二是g是一個比f更高階的函數。
        這樣我們就用z = g(x, f(x)) 來表示方程F(x, y) = 0和G(x, y, z) = 0的關聯解,它是一個迭代的函數。我們也可以用另一種形式來表示g,記z = g(x, y, f),這樣我們將函數g一般化為一個高階函數。同前面相比,后面這種表示方式的好處是,它是一種更加泛化的模型,例如T(x,y) = 0和G(x,y,z) = 0的關聯解,我們也可以用同樣的形式來表示(只要令f=t)。在這種支持把問題的解轉換成高階函數迭代的語言體系中,函數就被稱為“第一型”。
        JavaScript中的函數顯然是“第一型”。下面就是一個典型的例子:

        Array.prototype.each = function(closure)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 霍州市| 清水河县| 宁陕县| 长春市| 航空| 苗栗县| 友谊县| 广宁县| 东安县| 泰来县| 赤水市| 石景山区| 安乡县| 保德县| 全州县| 巧家县| 昌黎县| 浪卡子县| 泾阳县| 丰台区| 阿拉善右旗| 行唐县| 应用必备| 房山区| 宜兰县| 大渡口区| 云安县| 饶河县| 石景山区| 湾仔区| 安陆市| 丰镇市| 郸城县| 尚义县| 淄博市| 扶绥县| 清水县| 察哈| 平安县| 三江| 都匀市|