JavaScript
==========

**JavaScript** (souvent abrégé en « JS ») est un langage de script léger, orienté objet, principalement connu comme le langage de script des pages web. Mais il est aussi utilisé dans de nombreux environnements extérieurs aux navigateurs web tels que Node.js, Apache CouchDB voire Adobe Acrobat. Le code JavaScript est interprété ou compilé à la volée (JIT). C'est un langage à objets utilisant le concept de prototype, disposant d'un typage faible et dynamique qui permet de programmer suivant plusieurs paradigmes de programmation : fonctionnelle, impérative et orientée objet. Apprenez-en plus sur JavaScript.

Cette section de MDN est dédiée au langage JavaScript. Pour des informations sur l'utilisation de JavaScript avec les API spécifiques des navigateurs web pour les pages web, veuillez consulter les sections sur les API Web (*Web API* en anglais) et le DOM.

Le standard qui spécifie JavaScript est ECMAScript. En 2012, tous les navigateurs modernes supportent complètement ECMAScript 5.1. Les anciens navigateurs supportent au minimum ECMAScript 3. Une sixième version majeure du standard a été finalisée et publiée le 17 juin 2015. Cette version s'intitule officiellement ECMAScript 2015 mais est encore fréquemment appelée ECMAScript 6 ou ES6. Étant donné que les standards ECMAScript sont désormais édités sur un rythme annuel, cette documentation fait référence à la dernière version en cours de rédaction, actuellement c'est ECMAScript 2020.

JavaScript ne doit pas être confondu avec le langage de programmation Java. Java et JavaScript sont deux marques déposées par Oracle dans de nombreux pays mais ces deux langages de programmation ont chacun une syntaxe, une sémantique et des usages différents.

**Vous cherchez à devenir un développeur web front-end ?**

Nous avons élaboré un cours qui comprend toutes les informations essentielles dont vous avez besoin pour atteindre votre objectif.

Commencer

Tutoriels
---------

Apprenez comment programmer en JavaScript.

### Ressources pour commencer

Si vous souhaitez apprendre JavaScript et que vous débutez en programmation ou en JavaScript, la section JavaScript de la zone d'apprentissage de MDN (*learning area*) est le meilleur endroit où commencer. Cette section contient les modules suivants :

Les premiers pas en JavaScript

Cet ensemble de chapitres répond à des questions telles que « qu'est-ce que JavaScript ? », « à quoi ressemble-t-il ? », « que puis-je faire avec ? » et présente des éléments clés du langage tels que les variables, les chaînes de caractères, les nombres et les tableaux.

Les principaux blocs de JavaScript

On poursuit ici la présentation des fonctionnalités importantes de JavaScript, notamment celle des blocs de codes fréquemment utilisés comme les instructions conditionnelles, les boucles, les fonctions et les évènements.

Une introduction aux objets JavaScript

JavaScript est un langage de programmation « orienté objet » et ce concept est primordial pour utiliser JavaScript au mieux, écrire du code plus efficace et comprendre son fonctionnement. Ce module présente les bases de ces concepts.

La programmation asynchrone en JavaScript

Dans cet article, on aborde les fonctionnalités asynchrones de JavaScript, en quoi elles sont importantes et la façon dont elles peuvent être utilisées lors d'opérations bloquantes comme la récupération de ressources provenant d'un serveur.

Les API Web utilisées côté client

Lorsqu'on écrit du JavaScript pour un site web ou une application, il est rapidement nécessaire de manipuler les API : des interfaces qui permettent de manipuler différents aspects du navigateur, des données provenant d'autres sites ou services, etc. Dans ce module, nous verrons ce que sont les API, et comment utiliser les API les plus fréquemment utilisées.

### Guide JavaScript

Guide JavaScript

Un guide détaillé de JavaScript, destiné aux personnes qui ont déjà développé en JavaScript ou avec un autre langage.

### Niveau intermédiaire

Comprendre les *frameworks* JavaScript côté client

Les *frameworks* JavaScript font partie de l'écosystème du développement web côté client. Les outils qu'ils fournissent permettent de construire des applications dynamiques sur des bases robustes. Dans ce module, on présente les notions principales de leur fonctionnement et comment ces outils peuvent rejoindre votre panoplie. Des tutoriels sur les frameworks les plus répandus suivront cet article.

Une réintroduction à JavaScript

Un aperçu pour ceux qui *pensent* s'y connaître en JavaScript.

Structures de données JavaScript

Aperçu des structures de données disponibles en JavaScript.

Égalité, comparaison et similarité

JavaScript propose trois opérations de comparaison de valeurs différentes : l'égalité stricte à l'aide de `===`, l'égalité souple à l'aide de `==` et la méthode `Object.is()`.

Closures

Une *closure* est la combinaison d'une fonction et de l'environnement lexical dans lequel cette fonction a été déclarée.

### Niveau avancé

Héritage et chaîne de prototypes

Cette page explique l'héritage à base de prototype, un concept souvent incompris et sous-estimé.

Le mode strict

Une variante plus restreinte de JavaScript (par exemple, on ne peut pas utiliser de variable avant de l'avoir définie). Elle permet d'obtenir de meilleures performances et de faciliter le débogage.

Les tableaux typés en JavaScript

Les tableaux typés permettent d'accéder à des données binaires brutes, de façon organisée.

La gestion de la mémoire en JavaScript

Cet article décrit le cycle de vie des objets et de la mémoire en JavaScript, ainsi que le mécanisme du ramasse-miettes.

Gestion de la concurrence et boucle des événements

Le modèle de concurrence utilisé par JavaScript est basé sur une « boucle d'événements »

Référence
---------

Parcourez la documentation complète de la référence JavaScript.

Les objets standard

Apprenez à connaître les objets natifs standard tels que `Array`, `Boolean`, `Date`, `Error`, `Function`, `JSON`, `Math`, `Number`, `Object`, `RegExp`, `String`, `Map`, `Set`, `WeakMap`, `WeakSet`, et d'autres.

Les expressions et les opérateurs

Apprenez à connaître comment fonctionnent les opérateurs JavaScript comme `instanceof`, `typeof`, `new`, `this` et bien d'autres notions comme la précédence des opérateurs.

Les instructions et les déclarations

Apprenez à connaître comment utiliser `do...while`, `for...in`, `for...of`, `try...catch`, `let`, `var`, `const`, `if...else`, `switch` et les autres mots-clés et instructions JavaScript.

Les fonctions

Apprenez à utiliser les fonctions en JavaScript pour développer vos applications.

Outils & ressources
-------------------

Voici une liste d'outils utiles pour écrire et déboguer du code **JavaScript**.

Outils de développement de Firefox

Console web, profileur JavaScript, débogueur, et plus.

Invites de commande JavaScript

Un interpréteur de commandes JavaScript vous permet de tester rapidement des extraits de code JavaScript.

Apprendre le JavaScript (en anglais)

Une excellente ressource pour les développeurs web en herbe - Apprenez JavaScript dans un environnement interactif, avec des leçons courtes et des tests interactifs, guidés par une évaluation automatique. Les 40 premières leçons sont gratuites, et le cours complet est disponible moyennant un petit paiement unique.

TogetherJS

La collaboration rendue facile. En ajoutant TogetherJS à votre site, vos utilisateurs peuvent s'entraider sur un site web en temps réel !

Stack Overflow

Questions Stack Overflow portant le tag « JavaScript ».

JSFiddle

Modifiez votre code JavaScript, CSS, HTML et obtenez des résultats en direct. Utilisez des ressources externes et collaborez avec votre équipe en ligne.

Plunker

Plunker est une communauté en ligne pour créer, collaborer et partager vos idées de développement web. Modifiez vos fichiers JavaScript, CSS, HTML et obtenez des résultats en direct et la structure des fichiers.

JSBin

JS Bin est un outil de débogage collaboratif open-source pour le développement web.

Codepen

Codepen est un autre outil de développement web collaboratif utilisé comme un terrain de jeu pour des résultats en direct.

StackBlitz

StackBlitz est un autre terrain de jeu/outil de débogage en ligne, qui peut héberger et déployer des applications full-stack utilisant React, Angular, etc.

RunJS

RunJS est un outil de bureau de type bac-à-sable/ardoise, qui fournit des résultats en direct et un accès aux API Node.JS et à celles du navigateur.