Les deux types de variables (port�es) du JavaScript !!
Microsoft JScript a deux port�es: globale et locale. Une variable d�clar�e en dehors d'une d�finition de fonction, est une variable globale, et sa valeur est accessible et modifiable dans tout votre programme. Si vous d�clarez une variable � l'int�rieur d'une d�finition de fonction, elle est locale. Elle est cr��e et d�truite � chaque ex�cution de la fonction et n'est pas accessible en dehors de la fonction.
Une variable locale peut porter le m�me nom qu'une variable globale, mais est totalement distincte. La modification de la valeur d'une variable n'a aucune incidence sur l'autre. � l'int�rieur de la fonction dans laquelle la variable locale est d�clar�e, seule la version locale est significative.
var aCentaur = "�tre fabuleux moiti� homme, moiti� cheval,"; // D�finition globale de aCentaur.
// Code JScript, omis pour rester bref.
function antiquities() // Une variable locale aCentaur est d�clar�e dans cette fonction.
{
// Code JScript, omis pour rester bref.
var aCentaur = "Un centaure est probablement un guerrier Scythe";
// Code JScript, omis pour rester bref.
aCentaur += ", mal identifi�; c'est-�-dire, "; // Ajoute � la variable locale.
// Code JScript, omis pour rester bref.
} // Fin de la fonction.
var nothinginparticular = antiquities();
aCentaur += " vu de loin par un observateur na�f.";
/*
Dans la fonction, la variable contient "Un centaure est probablement un guerrier Scythe,
mal identifi�; c'est-�-dire, "; en dehors de la fonction, la variable contient le reste
de la phrase: "�tre fabuleux moiti� homme, moiti� cheval, vu de loin par un observateur na�f."
*/
Il est important de noter que les variables sont interpr�t�es comme si elles
�taient d�clar�es au d�but de leur port�e d'existence. Ceci entra�ne
parfois des comportements impr�vus.
var aNumber = 100;
var withAdditive = 0;
withAdditive += aNumber; // withAdditive a maintenant la valeur 100.
tweak();
withAdditive += aNumber; // withAdditive a maintenant la valeur 200.
function tweak() {
var newThing = 0; // D�claration explicite de la variable newThing.
// L'instruction suivante, si elle n'est pas mise en commentaire, g�n�re une erreur.
// newThing = aNumber;
// L'instruction suivante attribue la valeur 42 � la variable locale aNumber, la d�clarant implicitement.
aNumber = 42;
if (false) {
var aNumber; // Cette instruction n'est jamais ex�cut�e.
aNumber = "Hello!"; // Cette instruction n'est jamais ex�cut�e.
} // Fin de la conditionnelle.
} // Fin de la d�finition de la fonction.
L'instruction qui est mise en commentaire tente d'affecter la valeur de la
variable locale aNumber aNumber � la variable locale newThing. Elle newThing �choue,
bien qu'une variable locale aNumber soit d aNumber �finie ailleurs dans la
fonction et y existe donc partout. N'ayant pas de valeur attribu�e � la
position de cette instruction dans le code, la variable aNumber est donc
undefined(non d aNumber �finie) qui veut dire que c'est une valeur sp�ciale donn�es
aux variables apr�s leur cr�ation et avant affectation d'une valeur.