# Programmation JavaScript/Expression littérale

* 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 ]
Dans un programme JavaScript, il est courant de devoir introduire des données sous forme littérale. Cela se produit principalement quand on renseigne une variable, ou quand on appelle une fonction.
Ce qui suit est valide pour le code JavaScript écrit dans les fichiers externes, ou entre les balises <script> </script>. En ce qui concerne le code associé aux évènements (onclick, onload...), l'approche est différente.
Ces expressions littérales peuvent être des chaînes, ou des nombres.

## Les chaînes sous forme littérale

Elles sont constituées de lettres, chiffres, ponctuation et symboles avec un mécanisme (échappement) permettant d'étendre cet ensemble à des caractères de contrôle, de formatage et des caractères spéciaux.
Une chaîne exprimée sous forme littérale est délimitée par des guillemets double ( " ) ou simple ( ' ).
La règle veut qu'une chaîne ouverte avec un guillemet double doit être fermée avec un guillemet double. De même, une chaîne ouverte avec un guillemet simple doit être fermée avec un guillemet simple.
La première complication se produit quand nous désirons inclure des guillemets dans notre chaîne.
Appelons une fonction avec une chaîne en paramètre :
... à la place, on peut écrire:
... mais c'est affreux.
Pour utiliser une solution élégante, nous avons recours au mécanisme d'échappement.

### Le mécanisme d'échappement

Le mécanisme d'échappement consiste à inclure dans les chaînes, des anti-slash (\) suivis d'un caractère choisi pour sa fonction.
les caractères échappés sont en nombre limités et facile à mettre en œuvre.

#### L'échappement des guillemets simples (\') ou double (\")

Précédé d'un anti-slash, les guillemets ne feront plus office de délimiteur de chaîne, et ceci permet de les inclure comme de simples symboles de ponctuation.

#### Le retour à la ligne avec \n

Il est interdit d'aller à la ligne à l'intérieur d'une chaîne de caractère délimitée par ' ou ".
Cependant, il peut être utile de formater une chaîne en la présentant sur plusieurs lignes. La séquence d'échappement \n réalise cela. Elle inclut en effet le caractère de contrôle "linefeed" (valeur 10 en décimal, 0A en hexadécimal) qui réalise le retour à la ligne avec la plupart des navigateurs graphique.
Par exemple, il n'est pas possible de formater une chaîne de caractère en utilisant le code suivant :
Il faudra utiliser à la place l'écriture suivante :
... affiche :

#### Heredoc : le retour à la ligne avec `

Autre solution, utiliser l'accent grave à la place de ' ou " (`) :
Avec une variable (par interpolation) :

#### La tabulation avec \t

La séquence d'échappement \t insère un caractère de tabulation dans la chaîne, et permet ainsi de formater l'affichage. Le caractère de tabulation est codé 9 en décimal et 09 en hexadécimal.

#### L'inclusion de caractères unicode avec \u

Javascript, quand il est codé dans un fichier distinct, ou quand il est codé entre les balises <script> </script> ne supporte pas les entités de la forme &lt; ou &#160;, ou toute autre forme d'entité.
L'échappement \u offre un mécanisme de remplacement dont la mise en œuvre nécessite de se référer à une table associant les codes hexadécimaux au symboles correspondant (par exemple).
Ces codes hexadécimaux sont présentés avec 4 (ou 5) chiffres hexadécimaux, et la séquence d'échappement \u nécessite d'écrire ces 4 chiffres sous peine d'un déclenchement d'erreur.
... affiche Rodrigue as-tu du cœur?
ce qui est plus conforme à l'original que l'anti-typographique "coeur", utilisé à longueur d'internet.
L'inclusion de caractères Unicode permet l'accès aux symboles et à la citation de fragments utilisant d'autres alphabets que le nôtre.
De plus, il permet également l'inclusion des caractères de contrôle. Ainsi, \n et \u000A sont équivalents.
Table Unicode (wikipédia)
Unicode est toutefois plus vaste et peut être découvert au travers du livre Wikibooks À la découverte d'Unicode.

## Les nombres sous forme littérale

Les nombres sont constitués de chiffres et de signes à l'exclusion du caractère espace. JavaScript permet d'exprimer littéralement les nombres entiers, réels, octaux, hexadécimaux, exponentiels, sous forme positive ou négative.

### Les nombres négatifs

En plaçant le signe moins ( - ) devant le nombre, on obtient ce nombre en négatif, et ceci qu'il soit noté comme entier, réel, octal, hexadécimal ou exponentiel.

### Les entiers

Ils s'écrivent tel quel, c'est la représentation par défaut, employant les chiffres 0 à 9.

### Les réels

Le signe de séparation de la partie entière est le point ( . )

### L'octal

Un nombre commençant par zero et ne comprenant que les chiffres de 0 à 7 sera interprété en octal.

### L'hexadécimal

Un nombre commençant par 0x (ou 0X) comprenant les chiffres et les lettres abcdef en minuscule, majuscule ou les deux, sera interprété en hexadécimal.

### La notation scientifique

En faisant suivre un nombre entier ou réel de la lettre e (ou E), elle-même suivie d'un entier positif ou négatif, on obtient un nombre en notation scientifique.

### Taille des nombres

Le type number est au format 64 bits double précision.

## Les chaînes littérales dans les expressions associées aux évènements

À l'intérieur des balises HTML, il est possible d'intégrer du code JavaScript associé aux évènements, (comme onclick, onmouseover...). Javascript est à ce moment là interprété en dehors de son territoire propre, c'est à dire entre les balises <script> et </script> ou dans un fichier séparé. Sa rédaction obéit alors aux règles de rédaction des attributs des balises, qui n'autorisent pas tout.
Html, comme xhtml, ne reconnaît pas les séquences de type \uHHHH. Nous devons nous limiter aux caractères échappés classiques, amputés de ( \" ) et ( \' ). En effet, ces deux caractères ne seront pas interprétables comme valeur de la propriété de la balise.
Si nous voulons afficher Je suis "cliqué", nous devons recourir aux entités.
Les entités sont un mécanisme permettant d'insérer n'importe quel caractère dans une chaîne.
Selon la référence du doctype html, nous aurons accès à des entités munies d'un identificateur. Sinon, sous réserve de disposer d'une table adéquate, nous pouvons reproduire n'importe quel caractère.
Sans aller plus-avant dans la description des entités, nous pouvons les décrire comme suit :
L'entité commence par le caractère & (esperluette ou "et commercial") et finit par un point-virgule. Entre ces deux symboles, on rencontre soit un identificateur ( &lt; &gt; &amp;), soit le code du caractère exprimé en décimal et précédé du signe sharp (#) (&#160; &#339;).
... Mission accomplie.