4.2 Variables texte ou string, la fonction eval() |
See You Why? |
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'.
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 :
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énom ?","");
qui stocke dans la variable ma_variable la réponse donnée par l'internaute à la question "Quel est ton prénom ?".
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'.
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 :
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...
zlien[z][i]= '<a href = ' + sitemlinks[z][i] + ' class=ejsmenu title="'+ sitemcomm[z][i] +'">' + sitems[z][i] +'</a>';
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;
écrira "Valeur de a = 23"
chaine="a = a + 21";
eval(chaine);
document.write("Valeur de a = "+a);
var seq = "var x=5;var y=6;function multipliepary(a){return a * y;}";
écrira : "x=5
eval(seq);
document.write("x=" + x + "<br>");
document.write("y=" + y + "<br>");
document.write("multipliepary(x)=" + multipliepary(x) + "<br> ");
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.
voir suite >>>
voir suite >>>
voir suite >>>
voir suite >>>
voir suite >>>