Cet article fait partie de la série de logiciels d'écriture sur la programmation fonctionnelle et diverses techniques d'écriture de programmes JavaScript ES6 +, en partant des bases. Section précédente: Logiciel d'écriture: une introduction
Oubliez tout ce que vous saviez sur JavaScript et essayez d'interpréter cet article comme si vous étiez un programmeur débutant. Pour vous aider, nous aborderons JavaScipt à partir des bases, comme si vous n'aviez jamais vu JavaScript. Eh bien, si vous êtes débutant, vous avez de la chance. Enfin, essayons d'apprendre ES6 et la programmation fonctionnelle à partir de zéro! Heureusement, tous les nouveaux concepts seront explorés en cours de route - mais ne comptez pas trop là-dessus.
Si vous êtes un développeur chevronné déjà familiarisé avec JavaScript ou un langage purement fonctionnel, alors vous pourriez penser que JavaScript est un moyen amusant de découvrir le monde * [FP]: la programmation fonctionnelle. Mettez ces pensées de côté et essayez de regarder le texte avec un œil ouvert. Vous découvrirez peut-être un niveau caché dans la programmation JavaScript, un niveau dont vous ignoriez l'existence.
Puisque cet article a dans le titre "Writing Software", et FP est évidemment un moyen d'écrire un programme (en utilisant une composition fonctionnelle, des fonctions d'ordre supérieur, etc.), alors vous pourriez vous demander pourquoi nous ne prenons pas de Haskell, ClojureScript , ou Elm au lieu de JavaScript.
JavaScript contient des fonctionnalités importantes nécessaires pour 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 .