Programmation JavaScript/Expression littérale

Un livre de Wikibooks.

Programmation JavaScript
Département Informatique
Programmation JavaScript
Sommaire
  1. Introduction Image:100%.svg
  2. Présentation
  3. Syntaxe Image:50%.svg
    1. Ligne d'instruction Image:100%.svg
    2. Ordre d'évaluation Image:100%.svg
    3. Bloc d'instructions Image:100%.svg
    4. Identificateurs Image:100%.svg
    5. Expression littérale Image:100%.svg
    6. Commentaire Image:100%.svg
    7. Mots réservés et constantes Image:100%.svg
    8. Variables Image:100%.svg
    9. Opérateurs Image:100%.svg
    10. Structures de contrôle Image:75%.svg
      1. if else
      2. ? :
      3. switch
      4. for
      5. while
      6. do
    11. Fonctions utilisateur Image:100%.svg
    12. Evenement Image:75%.svg
    13. Objets prédéfinis Image:00%.svg
      1. window Image:25%.svg
      2. document Image:25%.svg
      3. navigator Image:25%.svg
      4. Array (tableaux) Image:100%.svg
      5. Boolean Image:00%.svg
      6. Date Image:25%.svg
      7. Error Image:00%.svg
      8. Function Image:00%.svg
      9. Math Image:25%.svg
      10. Number Image:25%.svg
      11. Object Image:00%.svg
      12. RegExp Image:00%.svg
      13. String Image:25%.svg
    14. Fonctions prédéfinies
  4. Mise en oeuvre
  5. Programmation avancée
    1. Opérateurs de bits Image:00%.svg
    2. Programmation objet Image:00%.svg
    3. Gestion d'évennements Image:00%.svg
    4. Exceptions et erreurs Image:00%.svg
    5. Interface DOM Image:00%.svg
    6. Objets Microsoft Image:00%.svg
    7. Applets Java Image:00%.svg
    8. Notation JSON Image:00%.svg
    9. AJAX Image:00%.svg
  6. Debuggage
  7. Exemples commentés
  8. RéférencesImage:00%.svg
    1. Évènements
    2. Liens
Modifier ce modèle ce sommaire
<< Retour au sommaire détaillé /  Les commentaires >>

Dans un programme javascript, il est courant de devoir introduire des données sous forme littérale. Celà 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 évennements (onclick, onload...), l'approche est différente.

ma_var = "une chaîne exprimée littéralement";
mon_nombre = 12; // un nombre littéral;
alert("Ce message est une chaîne littérale");

Ces expressions littérales peuvent être des chaînes, ou des nombres.

[modifier] 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 :

alert("le titre de l'article : "les joies de l'informatique""); // ne marche pas

... à la place, on peut écrire:

alert("le titre de l'article : " + '"' + "les joies de l'informatique" + '"' );

... mais c'est affreux. Pour utiliser une solution élégante, nous avons recours au mécanisme d'échappement.

[modifier] 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 oeuvre :

[modifier] 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.

alert("Mon nom est \"Personne\""); // affiche : Mon nom est "Personne"

[modifier] Le retour à la ligne avec \n

Il peut être utile de formater une chaîne en la présentant sur plusieurs lignes. La séquence d'échappement \n réalise celà. 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 ave la plupart des navigateurs graphique.

alert("première, \ndeuxième \net troisième ligne");

... affiche
première,
deuxième
et troisième ligne

[modifier] 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 héxadécimal.

alert("colonne 1 \tcolonne 2 \tcolonne 3");

[modifier] 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 oeuvre nécessite de se référer à une table associant les codes héxadécimaux au symboles correspondant. (par exemple)
Ces codes héxadécimaux sont présentés avec 4 digit, et la séquence d'échappement \u nécessite d'écrire les 4 digit sous peine d'un déclenchement d'erreur.

alert("Rodrigue as-tu du c\u0153ur?");

... 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 ds caractères de contrôle. Ainsi, \n et \u000A sont équivalents.
Table unicode (wikipedia)

[modifier] 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, octals, héxadécimaux, exponentiels, sous forme positive ou négative.

[modifier] 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.

ma_var = -5;

[modifier] Les entiers

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

ma_var = 12;

[modifier] Les réels

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

ma_var = 8.65;

[modifier] L'octal

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

ma_var = 0257;

[modifier] 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.

ma_var = 0xf044;

[modifier] 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.

ma_var = 2.5e40; // Un grand nombre : 2,5 * 10 exposant 40
ma_var = 50e-30 // Un tout petit nombre

[modifier] Taille des nombres

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

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

A 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.

<div onclick="alert('Je suis cliqué')">cliquez moi!</div>

Html, comme xhtml, ne reconnait 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écrires comme suit :
L'entité commence par le caractère & (éperluette 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;)

<div onclick="alert('Je suis &#34;cliqué&#34;')"> // Affiche: Je suis "cliqué"
     cliquez moi!
</div> 

... Mission accomplie.

Les commentaires >>