# Programmation JavaScript/Mots réservés

* Introduction
    Programmer en deux minutes
*   * Page wiki
*   * Compteur en temps réel
*   * Site dans un document
* Outils de développement
* Syntaxe
** Ligne d'instruction
** Ordre d'évaluation
** Bloc d'instructions
** Identificateurs
** Expression littérale
** Commentaire
** Mots réservés
** Variables
** Opérateurs
** Structures de contrôle
** Exceptions et erreurs
** Fonctions utilisateur
** Évènement
* Objets prédéfinis
** window
** document
** navigator
** Array
** Boolean
** Date
** Error
** Function
** Math
** Number
** Object
** String
** Element
** RegExp
* Fonctions prédéfinies
* Programmation avancée
** Opérateurs de bits
** Fermeture
** Programmation objet
** Notation JSON
** AJAX
** Stockage
** Générateurs
** Interface DOM
** Objets Microsoft
* Frameworks
** Dojo
    Hello World
    Widgets
    Ressources
** jQuery
** Node.js
** React.js
* Tests
** Ava
** Jest
** Cypress
* Débogage
* Erreurs connues
* Références
* Introduction
    Programmer en deux minutes
*   * Page wiki
*   * Compteur en temps réel
*   * Site dans un document
* Outils de développement
* Syntaxe
** Ligne d'instruction
** Ordre d'évaluation
** Bloc d'instructions
** Identificateurs
** Expression littérale
** Commentaire
** Mots réservés
** Variables
** Opérateurs
** Structures de contrôle
** Exceptions et erreurs
** Fonctions utilisateur
** Évènement
* Objets prédéfinis
** window
** document
** navigator
** Array
** Boolean
** Date
** Error
** Function
** Math
** Number
** Object
** String
** Element
** RegExp
* Fonctions prédéfinies
* Programmation avancée
** Opérateurs de bits
** Fermeture
** Programmation objet
** Notation JSON
** AJAX
** Stockage
** Générateurs
** Interface DOM
** Objets Microsoft
* Frameworks
** Dojo
    Hello World
    Widgets
    Ressources
** jQuery
** Node.js
** React.js
* Tests
** Ava
** Jest
** Cypress
* Débogage
* Erreurs connues
* Références
[ Modifier le sommaire ]
Cet article va passer en revue les mots réservés et constantes prédéfinies de JavaScript. La norme ECMA 262, définit les mots réservés de JavaScript en deux catégories :
On ne doit pas utiliser un mot réservé comme identificateur. Cela provoque une erreur. Mais comme le langage différencie les majuscules et minuscules, il est possible de mettre en majuscule une lettre pour rendre l'identificateur utilisable.
On peut, avec la plupart des navigateurs utiliser un futur mot réservé comme identificateur, mais cela est déconseillé, car le programme ne fonctionnera probablement plus à l'apparition d'une version future de JavaScript.
Voici une description sommaire des mots réservés :

## Déclarations
### var

Déclaration d'une variable locale, avec ou sans affectation. À placer en début d'instruction.
Une variable locale est détruite automatiquement à la fin de la fonction où elle a été créée (sauf dans le cas des closures). Seul le code écrit dans cette fonction peut y accéder, et dans ce code, la variable est prioritaire sur tout autre identifiant homonyme. En revanche, elle ne peut être détruite par l'opérateur delete.
Voir la section sur rehaussement des déclarations.

### const

Déclaration d'une constante locale.

### let

Comme "var" mais restreint la portée au bloc, comme si ce bloc était situé dans une autre fonction. Exemple :

### function

Déclaration d'une fonction utilisateur. C'est aussi un opérateur.

### void

void est une déclaration placée obligatoirement en début d'instruction. void ne fait rien, ne retourne rien, et n'est utile que dans un seul contexte : les pseudo-URL javascript:. En effet, si l'instruction qui compose cet URL retourne une valeur, cette valeur remplace le contenu de la page, ce qui est souvent indésirable. On place alors la déclaration void pour que l'instruction n'ait aucune valeur.

### with

Permet de simplifier la référence aux propriétés et méthodes des objets en précédant un bloc d'instruction dans lequel un objet devient implicite. La déclaration with rajoute en fait un niveau tout en haut de la pile de scopes.
est équivalent à

## Structures de contrôle
### return

Employé dans une fonction, provoque le retour au programme appelant avec renvoi facultatif d'un résultat.

### if

Permet de définir l'exécution conditionnelle d'instructions ou d'un bloc d'instructions. Peut-être utilisé conjointement à else.

### else

Utilisé conjointement à if, permet d'exécuter des instructions alternativement au résultat de la condition spécifiée par if.

### switch

Utilisé conjointement à case, permet d'implanter un sélecteur de cas.

### case

Utilisé à l'intérieur d'un bloc switch, constitue un des choix du sélecteur.

### break

Utilisé à l'intérieur d'un bloc switch, permet de sortir du sélecteur sans procéder tests suivants. Utilisé à l'intérieur d'une boucle telle un bloc switch, permet de quitter la boucle immédiatement.

### default

Utilisé à l'intérieur d'un bloc switch, constitue l'option par défaut du sélecteur.

### for

Introduit une boucle itérative.
For each :
En tableau associatif :
NB : voir aussi la méthode Array.prototype.forEach.

### do

Introduit une boucle itérative conditionnelle avec test effectué à chaque tour par "while" :

### while

Introduit une boucle itérative conditionnelle:

### continue

Utilisé dans une boucle "for", "while" et "do", permet de sauter un tour.

## Gestions des erreurs
### throw

Provoque une erreur personnalisée.

### try ... catch ... finally

Évalue un bloc (try) en capturant les erreurs, tente de les gérer (catch) si elles se produisent, et quoiqu'il arrive, évalue un dernier bloc (finally).

## Opérateurs
### in

Opérateur qui détermine l'appartenance à un objet. Dans une boucle for... in, permet de répéter des instructions pour chaque propriété d'un objet.

### new

Opérateur qui permet l'instanciation d'un objet.

### instanceof

Cet opérateur permet de tester si une valeur est une instance d'un objet :

### typeof

Cet opérateur renvoie le type de la variable placée à droite. Les valeurs renvoyées par typeof correspondent aux types de variables JavaScript, soit : boolean string number function object undefined.

### delete

Cet opérateur permet de supprimer une propriété.

## Valeurs spéciales
### this

Dans le constructeur ou une méthode d'un objet, c'est une référence à l'objet. Hors de ce contexte, this référence l'objet global window.

### true

Valeur booléenne "vrai".

### false

Valeur booléenne "faux".

### null

Valeur de type "object" qui ne référence rien.

### undefined

C'est la valeur de toutes les variables inexistantes ou supprimées.

## Futurs mots réservés

Les versions futures de JavaScript intégreront peut-être un ou plusieurs mots réservés parmi la liste suivante. Il est donc officiellement déconseillé de les employer comme identificateurs dans les programmes actuels, sous peine de risquer un comportement bizarre dans le futur.

## Références

* ↑ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#keywords
* ↑ https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Instructions/const
* ↑ https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
* ↑ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#future_reserved_words