Premiers pas en JavaScript

4.2 Variables texte ou string, la fonction eval()
cuy copyleft
  See You Why?  

 


variables numériques (4.1) | | variables boolennes ou logiques (4.3)

Contenu

 

 

I. Variables numériques

voir <<<séquence précédente

 

II. Variables 'string'...

Nous avons vu dans la séquence précédente comment affecter une variable numérique.

var ma_variable = 32;

En informatique, une chaîne de caractères est une suite ordonnée de caractères.
La chaîne de caractères est un type de donnée dans de nombreux langages informatiques.
En anglais, on emploie le terme string.

Et si l'on parle de variable string, c'est que JS peut mémoriser (mettre en boite) des lettres, des mots, voire même des phrases. C'est ce qui est fait sur la page d'accueil du site (voir ici), on y voit une pensée du moment qui apparait de façon aléatoire, l'auteur de chacune des pensées et une petite phrase qui varie selon l'heure qu'il est. Ces chaines de caractères sont placées dans des variables en langage PHP, c'est pourquoi vous ne voyez qu'une seule des quelque 1000 pensées stockées.

Rappelez-vous ce qui a été dit en introduction,
en JS (langage côté client), vous auriez reçu les 1000 pensées, et c'est votre ordinateur qui en aurait choisi une...
en PHP (langage côté serveur), c'est le serveur qui les lit toutes, en choisit une et vous l'envoie au format HTML.

Quoi de plus sympatique pour rendre ses pages dynamiques et interactives que de retenir le prénom du visiteur de votre page (votre élève, par exemple) et de retenir sa ou ses réponses à des questions posées, afin de réagir de façon adéquate ?

Quelle place prend une variable string en mémoire ?
Une réponse rapide consiste à dire "au moins autant d'octets que de caractères dans la chaine". Exact, mais peu précis.
Pour être plus précis, il faut aussi rappeler que :

Reste à savoir comment affecter une variable JS d'une chaine de caractères ?

Nous finirons en abordant la fonction eval() qui permettra de trouver la valeur numérique d'une expression en 'string'.

A. règle générale...

Rien de plus facile :

var ma_variable = "voici mon texte";

En JS, on indique qu'il s'agit d'une variable texte en notant sa valeur entre guillemets.

On observera que :

      1. un mot est une chaine de caractères ;
      2. une chaine de caractères peut contenir des espaces qui ne sont que des caractères ordinaires, comme les autres ;
      3. par conséquent, une chaine de caractères peut contenir plusieurs mots séparés par des espaces ;
      4. les points, virgules, points d'interrogation... sont des caractères, donc une chaine de caractères peut contenir des phrases, voire des paragraphes, voire même le contenu d'un fichier... nous y reviendrons (voir ici).

Le lecteur aura peut-être reconnu l'écriture et la syntaxe de l'instruction PROMPT rencontrée dans notre chapitre 2 :
    var ma_variable = prompt("Quel est ton pr&eacute;nom ?","");
qui stocke dans la variable ma_variable la réponse donnée par l'internaute à la question "Quel est ton prénom ?".

B. à ne pas faire...

Une erreur classique des novices en programmation, c'est d'oublier les guillemets :

var ma_variable = texte;

En réalité, JS va alors considérer texte comme étant le nom d'une variable et s'efforcera de mettre dans la variable ma_variable le contenu de ce qu'il croit être une autre variable texte... alors que ce n'est pas votre volonté...

var ma_variable = "texte";

alors qu'avec les guillemets, JS comprendra que le mot 'texte' doit entrer dans la variable dénommée 'ma_variable'.

C. et s'il me faut des guillemets dans mon texte ?

Le lecteur attentif aura vite saisi la difficulté d'introduire un texte qui comprend des guillemets. Le navigateur va-t-il comprendre qu'il s'agit de guillemets du texte ou de guillemets terminant la valeur de la variable ?

Trois solutions s'offrent au programmeur :

      1. placer un backslach \ devant chaque guillemet intérieur (noté en rouge ci-dessous) d'une chaine de caractères et laisser inchangés les guillemets extérieurs :
        phrase = "Ne dis pas : \"C\'est impossible !\". Dis : \"Je ne l\'ai pas encore fait.\"";
        et pourquoi ne pas profiter de l'occasion pour faire la même chose avec les simples quotes ou apostrophes...
         
        Certains appellent cette méthode "emploi d'un caractère d'échappement" ou "escape sign".
         
      2. remplacer les guillemets intérieurs par d'autres caractères HTML spéciaux (voir ici) qui s'en approchent :
        (nous pensons ici
        au guillemet anglais ouvrant (&ldquo; ou &#147;),
        au guillemets anglais fermant (&rdquo; ou &#148;),
        au chevron ouvrant « (&laquo; ou &#171;),
        au chevron fermant » (&raquo; ou &#187;),
        au double prime (&Prime; ou &#8243; (attention au P en capitale)),
         
      3. remplacer les guillemets intérieurs par un simple quote ou apostrophe... mais ce caractère a aussi un sens particulier en JS, d'où le danger de générer des erreurs dans certains cas de multiples imbrications de guillemets et quotes (un exemple ci dessous, extrait de la programmation du menu apparaissant sur la majorité des pages de ce site CUY) :
        zlien[z][i]= '<a href = ' + sitemlinks[z][i] + ' class=ejsmenu title="'+ sitemcomm[z][i] +'">' + sitems[z][i] +'</a>';

D. la fonction eval()

Le lecteur pourrait souhaiter retrouver la valeur d'une expression donnée sous forme de chaine de caractères. Cette chaine (ce string) sera évaluée comme s'il s'agissait d'un code source.

Ainsi,
eval(3*4) aura la valeur 12;

var a=2;
chaine="a = a + 21";
eval(chaine);
document.write("Valeur de a = "+a);
écrira "Valeur de a = 23"

var seq = "var x=5;var y=6;function multipliepary(a){return a * y;}";
eval(seq);
document.write("x=" + x + "<br>");
document.write("y=" + y + "<br>");
document.write("multipliepary(x)=" + multipliepary(x) + "<br> ");
écrira : "x=5
y=6
multipliepary(x)=30 "

Certains sites conseillent d'éviter cette fonction eval car elle appelle le compilateur (je pense qu'ils devraient dire interpréteur) JavaScript, ralentit le système, est gourmande en mémoire et présenterait des risques de sécurité... ne me faites pas le reproche de ne pas vous l'avoir dit.

La fonction eval() interprète une chaîne de caractères en tant que code de programme JavaScript. La chaine de caractères citée doit être du code JavaScript exécutable correctement dans le contexte existant au moment de l'appel de cette fonction. La fonction eval() envoie ce code à l'interpréteur JavaScript qui l'analyse et l'exécute.

 

III. Variables logiques ou booléennes

voir suite >>>

 

IV. Variables 'null'

voir suite >>>

 

V. Variables tableau ou 'array'

voir suite >>>

 

VIII. Exercices sur les types de variables

voir suite >>>

 

IX. Test relatif aux types de variables

voir suite >>>

 


variables numériques (4.1) | | variables boolennes ou logiques (4.3)

 

 

Merci de votre visite à partir de :

Vous êtes sur :
https://cuy.be/cours/jvs/jvs_042_variables_texte.html

partager sur FaceBook...           consulter sur FaceBook...

 

copyleft
Des liens ne fonctionnent plus ?
Avez-vous des suggestions ?
des commentaires, des corrections, un encouragement... ?
Pour info : Non, il n'y a pas de version papier ou DOC, PDF, etc. de ces notes.


Envoyez-moi un E-Mail (cuy(point)w(at)skynet(point)be)

Attention (at) signifie @ et (point) signifie .

Accueil CUY = See you why?

Compteur gratuitEasyCounter     BelStat Monitored by BelStat - Your Site Counts
La 1 000 000e page a été visitée le 21 mai 2010.
La 2 000 000e page a été visitée ce 18 mars 2012, vers midi.
La 3 000 000e page a été visitée ce 7 janvier 2014 entre 18 h et 18 h 45,
La 4 000 000e page a été visitée ce 5 juin 2015 entre 15 h 49 et 15 h 52,
La 5 000 000e page a été visitée ce 29 aout 2017 après 23 h 30,
Et la 6 000 000e page visitée, trop tôt pour y penser ?
 
et, d'après BelStat, CUY est visité surtout en semaine, peu le weekend...
moins et irrégulièrement pendant les vacances :

visites sur 3 mois, de la mi octobre 2013 à la mi janvier 2014.
 
La 3 333 333e page visitée a eu lieu ce mardi 10 juin 2014, en début d'après midi...
La 3 666 666e page visitée a eu lieu ce dimanche 28 decembre 2014, vers 16 h...
Un tiers de million de pages visitées en 154 jours cela fait une moyenne de 2165 pages visitées par jour...
Deux tiers de million de pages visitées en 355 jours soit une moyenne de 1878 pages visitées par jour...
et seulement 1195 pages visitées quotidiennement pendant les vacances estivales
de la mi juin à la mi septembre 2014

Vous voulez lire quelques messages reçus ?
quelques encouragements ?
Cliquez ici


Fin septembre 2009, installation de ce compteur
qui ne compte chaque nouvel ordinateur visiteur qu'une seule fois
free counter
 
m-à-j du 22/11/2021 :

Depuis cette fin septembre 2009, parmi les 210 pays (sur 274 drapeaux connus) qui nous ont visité,
voici les 100 pays qui nous visitent le plus, 
Nos petits visiteurs, classés par date de visite, où un seul ordi nous a visité, sont :
199. Turkmenistan (TM May 10, 2017) ; 200. Lesotho (LS March 1, 2017) ;
201. Turks and Caicos Island (TC January 18, 2016
202. Cook Islands (CK September 19, 2015)  203. Faroe Islands (FO January 27, 2015
204. Virgin Islands American (VI November 12, 2014) ;
205. Belize (BZ September 29, 2014) ;206. Eswatini - Swaziland (SZ July 21, 2014) ;
207. Grenada (GD April 3, 2014) ; 208. Timor-Leste (TI March 29, 2014) ;
209. American Samoa (AS December 26, 2012) ; 210. Guyana (GY November 5, 2010).