2008-09-28 103 views
59

我在尋找掌握函數式編程概念的方法。Javascript作爲功能語言

我用的Javascript長年爲在Web應用程序客戶端腳本和除使用原型一切都簡單DOM操作,輸入驗證等

末,我有often read JavaScript是一支持函數式編程的語言。

隨着我的熟悉和經驗的Javascript,我喜歡的就是用它來學習函數式編程。我希望我能夠更專注於主要的功能概念,而不會被全新的語法陷入困境或分心。

因此,在總結,JavaScript是一個不錯的選擇來學習函數式編程的概念? Javascript中的哪些功能是相關/支持函數式編程?

+0

最好的方法是功能齊全。然後你會了解利弊。 – andho 2012-12-28 13:43:24

回答

6

雖然JavaScript的支持FP在一定程度上,它並不直接鼓勵它。這就是爲什麼像Oliver Steele's Functional這樣的項目存在,填補空白。所以我不會推薦它學習FP。取而代之的是F#。

+0

感謝您的鏈接,我有一些閱讀要做。 – Ash 2008-09-28 02:56:03

2

JavaScript是一種多範式語言。如果您的目標是學習功能語言概念,請嘗試從純功能語言開始,如OCamlHaskell

+9

「OCaml」中的「O」又是什麼意思? – xmjx 2008-09-29 19:36:06

+0

+1。 Objective Caml等等,它不是純粹的函數,而是多範式,因爲它增加了面向對象。 – Dereckson 2013-12-21 22:49:16

6

我要說的是,雖然可以快速掌握使用JavaScript使用JavaScript一些功能的編程概念,始終像一個函數式編程語言不是一種普遍的做法。至少不明顯是常見的。大多數人不會發布指明如何使用JavaScript進行函數式編程的教程 - marxidad指出的實際上是一個相當不錯的例子,但您不會找到很多。功能方面並不常見,就像人們在JavaScript中使用閉包時一樣,但並不知道他們在做這件事。

這樣的想法,即將兩個函數作爲參數傳遞給第三個函數,然後讓返回值成爲與前兩個函數相關的一些執行,這種高級技術幾乎總是隻出現在全局函數的核心中,像jQuery這樣的庫。自我執行匿名功能等已經取得了成功,但仍然沒有得到一致的使用。大多數教程常常關注JavaScript的面向對象功能,比如如何創建屬性和方法,範圍,訪問控制以及如何使用構造函數的prototype屬性。老實說,如果函數式編程是你想要的,那麼我會選擇一種嚴格意義上的這種語言。

9

Higher Order Javascript很好方法來熟悉javascript的功能方面。這也是一個相對較短的閱讀情況,如果你想讓自己的雙腳不會潛入更大的書本中。

6

我不記得是誰說的,但javascript被稱爲「Scheme with Algol syntax」。所以爲了學習Scheme/Lisp,Javascript並不是一個糟糕的開始。請注意,像Lisp這樣的函數式語言與純函數式語言(如Haskell)完全不同。

除了「一流功能」(意思是功能是值,可以賦予變量)之外,詞法範圍也是構成功能語言的固有部分。

Higher Order JavascriptThe Little Javascripter已被提及。他們都是優秀的文本。另外,Higher Order Programming in Javascript可能是一個更簡單的開始。