Artikel ini merupakan bagian dari rangkaian Penulisan Software pada pemrograman fungsional dan berbagai teknik penulisan program JavaScript ES6 +, mulai dari dasar-dasarnya. Bagian Sebelumnya: Perangkat Lunak Penulisan: Pengantar
Lupakan semua yang Anda ketahui tentang JavaScript dan cobalah menafsirkan artikel ini seolah-olah Anda adalah programmer pemula. Untuk membantu Anda, kami akan membahas JavaScipt dari yang paling dasar, seolah-olah Anda belum pernah melihat JavaScript. Nah, jika Anda seorang pemula, maka Anda beruntung. Terakhir, mari kita coba mempelajari ES6 dan pemrograman fungsional dari awal! Untungnya, semua konsep baru akan dieksplorasi di sepanjang jalan - tetapi jangan terlalu mengandalkan itu.
Jika Anda adalah pengembang berpengalaman yang sudah terbiasa dengan JavaScript atau beberapa bahasa fungsional murni, maka Anda mungkin berpikir JavaScript adalah cara yang menyenangkan untuk menemukan dunia * [FP]: pemrograman fungsional. Singkirkan pemikiran ini dan cobalah untuk melihat teks dengan mata terbuka. Anda mungkin menemukan level tersembunyi dalam pemrograman JavaScript, level yang tidak pernah Anda ketahui ada.
Karena artikel ini memiliki judul "Perangkat Lunak Menulis", dan FP jelas merupakan cara untuk menulis program (menggunakan komposisi fungsional, fungsi tingkat tinggi, dll.), Anda mungkin bertanya mengapa kami tidak menggunakan Haskell, ClojureScript , atau Elm, bukan JavaScript.
JavaScript berisi fitur penting yang diperlukan untuk FP:
. , .. , . , , , , .
-. ,
x => x * 2
JavaScript. .
. - . . , , , , . , . - , . ,
add(1)(2)
1
,add(1)
. :
/*
* :
* const add = function (x) {
* return function (y) {
* return x + y;
* }
* }
*/
const add = x => y => x + y;
const summ = add(1)(2);
JavaScript
JavaScript - , , .. . : () (, ), , ; - , - - . - , - , , .
- . :
const foo = {
bar: 'baz'
};
foo.bar = 'qux'; //
, . .
, JavaScript:
. "" . .
(). . , , . , ( , ) , .. , .
. - . .
for
,while
do ... while
.
: JavaScript "" (.. - . .). , . , JavaScript "" .
: . JavaScript , , , , Immutable.js Mori. , ECMAScript .
, , , const
ES6. , const
, . , const
.
const
, , . JavaScript freeze()
, , , - , . , JavaScript , .
: , JavaScript , " ". ( - . .).
. JavaScript, , ES6. , , Babel ( JavaScript , ES6 ES5), , .
: , .
JavaScript ,
, JavaScript , . , - (- - , , - . .). , -. Haskell -, , , - .
, , , , -, , "".
" - , ?" ~ , , . ", "
, , . - , :
" , , "", , , "", "". ~ . " ".
, - , . - -, . , , . , , .
JavaScript , , , .
, :
"... , ++ ( ) Java, "", "", , HTML."
Netscape , , , Scheme ( Lisp). :
" Netscape " Scheme" ".
JavaScript :
" , Java. Perl, Python Tcl Scheme."
, :
Scheme
Java
:
" , , scheme- self- ( ) (, , Self JavaScript - . .). Java, y2k, , ."
"" Java- , - JavaScript:
-
new
, -
class
extends
, .
: .
, JavaScript , "" ( Java, Flash ActiveX ).
, , JavaScript.
, , - JavaScript. , WebAssembly - , WebAssembly - JavaScript (AST). , WebAssembly JavaScript, ASM.js.
JavaScript :
, , JavaScript .
JavaScript . JavaScript , , , .
, - , . , (, ) - . , , , . , , , .
JavaScript , , npm
.
JavaScript - . , , , , , - , Java, Lisp C. JavaScript , , .
, JavaScript . , , , , ES6 - JavaScript , . JavaScript , , ?
JavaScript , , . Netflix ( Anglular 2+) , RxJS. Facebook , , Facebook Instagram. PayPal, KhanAcademy Flipkart Redux .
: Angular, React, Redux Lodash JavaScript, , Lodash Redux, , JavaScript .
" JavaScript?". , JavaScript , . JavaScript , " " Lisp, . , Haskell , Haskell.
. Haskell , JavaScript , .
, , JavaScript .