# Programmation JavaScript/Identificateurs

* 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 ]
La programmation JavaScript, comme tous les langages informatiques, demande au développeur de définir des identificateurs, et ceci dans deux cas :
* pour nommer une fonction utilisateur
* pour nommer une variable
Pour construire notre identificateur nous pouvons utiliser les caractères autorisés, et devons proscrire les caractères interdits. De plus, certaines combinaisons sont interdites. Notre identificateur ne doit pas correspondre à un mot réservé. Enfin, il est utile de se conformer à certaines recommandations en ce qui concerne le choix et l'orthographe de l'identificateur, pour renforcer l'expressivité du code.

## Principales règles

* Ne pas commencer par un chiffre,
* Ne pas utiliser de caractère interdit,
* Ne pas faire suivre un caractère accentué par un chiffre,
* Rester monobloc. Pas de caractère espace au milieu,
* Vérifier que l'identificateur n'est pas un mot réservé,
* Garder en tête que javascript différencie les majuscules des minuscules.

## Caractères autorisés

Tous les caractères sont autorisés, sauf ceux qui contreviennent aux règles précédentes et aux caractères interdits.
* Les lettres de l'alphabet, majuscules et minuscules,
* Les chiffres, sous réserve de ne pas commencer avec,
* Les caractères accentués, avec limitations,
* Certains caractères spéciaux : $ _
* Les séquences d'échappement unicode de forme \uNNNN

## Caractères interdits

* Les ponctuations et autres symboles spéciaux : - , . " ' @ : / + * % = ~ ! ? < > ( ) [ ] { } # & | ` ^ ¨ €
* Les caractères de contrôles obtenus par séquence d'échappement,
* Les espaces.

## Standardisation

Les identificateurs sont en particulier standardisés par l'ECMA 262, au chapitre §7.6. Ce standard s'appuie sur la chapitre 5 de l'Unicode version 3.
Sont en particulier autorisés les échappement Unicode, s'ils conduisent à un identificateur autorisé. Enfin, deux identificateurs équivalent ne sont considérés identique que s'ils sont identiques binairement.
Les versions suivants d'Unicode peuvent fonctionner mais ne sont pas nécessairement portables et compatibles.

## Notes de bas de page

* ↑ Librement disponible sur internet
* ↑ Lire éventuellement À la découverte d'Unicode.
* ↑ Par exemple la séquence [ e; accent aigu ] (en deux points de code ) est différent de [ e accent aigu ] (en un seul point de code)