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

首頁 > 語言 > JavaScript > 正文

Javascript函數式編程語言

2024-05-06 16:24:35
字體:
來源:轉載
供稿:網友
JavaScript 是近年來非常受矚目的一門編程語言,它既支持面向對象編程,也支持函數式編程。本文專門介紹JavaScript函數式編程的特性。
 

函數式編程語言

函數式編程語言是那些方便于使用函數式編程范式的語言。簡單來說,如果具備函數式編程所需的特征, 它就可以被稱為函數式語言。在多數情況下,編程的風格實際上決定了一個程序是否是函數式的。

是什么讓一個語言具有函數式特征?

函數式編程無法用C語言來實現。函數式編程也無法用Java來實現(不包括那些通過大量變通手段實現的近似函數式編程)。 這些語言不包含支持函數式編程的結構。他們是純面向對象的、嚴格非函數式的語言。

同時,純函數語言也無法使用面向對象編程,比如Scheme、Haskell以及Lisp。

然而有些語言兩種模式都支持。Python是個著名的例子,不過還有別的:Ruby,Julia,以及我們最感興趣的Javascript。 這些語言是如何支持這兩種差別如此之大的設計模式呢?它們包含兩種編程范式所需要的特征。 然而對于Javascript來說,函數式的特征似乎是被隱藏了。

但實際上,函數式語言所需要的比上述要多一些。到底函數式語言有什么特征呢?

 

特點 命令式 函數式
編程風格 一步一步地執行,并且要管理狀態的變化 描述問題和和所需的數據變化以解決問題
狀態變化 很重要 不存在
執行順序 很重要 不太重要
主要的控制流 循環、條件、函數調用 函數調用和遞歸
主要的操作單元 結構體和類對象 函數作為一等公民的對象和數據集

 

函數式語言的語法必須要顧及到特定的設計模式,比如類型推斷系統和匿名函數。大體上,這個語言必須實現lambda演算。 并且解釋器的求值策略必須是非嚴格、按需調用的(也叫做延遲執行),它允許不變數據結構和非嚴格、惰性求值。
 

  1. 譯注:這一段用了一些函數式編程的專業詞匯。lambda演算是一套函數推演的形式化系統(聽起來很暈), 它的先決條件是內部函數和匿名函數。非嚴格求值和惰性求值差不多一個意思,就是并非嚴格地按照運算規則把所有元素先計算一遍, 而是根據最終的需求只計算有用的那一部分,比如我們要取有一百個元素的數組的前三項, 那惰性求值實際只會計算出一個具有三個元素是數組,而不會先去計算那個一百個元素的數組。  
?
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安图县| 新密市| 尉犁县| 九龙坡区| 扶绥县| 伽师县| 临海市| 陈巴尔虎旗| 峨眉山市| 吉林市| 保康县| 张北县| 武川县| 绥棱县| 霸州市| 灵川县| 沅江市| 河北省| 科技| 海南省| 玛纳斯县| 永川市| 彰化市| 沁阳市| 阿勒泰市| 花垣县| 利辛县| 张家界市| 瓮安县| 普洱| 台东县| 九寨沟县| 抚州市| 友谊县| 台北县| 枣阳市| 类乌齐县| 辽阳市| 铜鼓县| 广丰县| 正镶白旗|