Dans this tutorial, il est écrit:
If you redeclare a JavaScript variable, it will not lose its value.
Pourquoi devrais-je redéclarer une variable? Est-ce pratique dans certaines situations?
je vous remercie
Ce n'est rien de plus qu'un rappel que si vous faites ceci:
var x=5;
var x;
alert(x);
Le résultat sera 5.
Si vous re-déclarez une variable dans d'autres langues par exemple, le résultat sera indéfini ou NaN, mais pas en javascript.
Vous trouverez un exemple de nouvelle déclaration d'une variable dans Google Analytics . Lorsque le code de suivi JavaScript est lancé par le script Google Analytics, il déclare ou redéclare _gaq
de la manière suivante:
var _gaq = _gaq || [];
En d'autres termes, si _gaq
est déjà défini, _gaq
est "redéclaré" comme tel. S'il n'est pas défini, il sera déclaré pour la première fois comme un tableau vide.
Cela permet au code de suivi de Google Analytics de prendre en charge d'autres scripts pouvant nécessiter l'utilisation de la variable avant le lancement du code Google Analytics. Comme @xralf l'a fait remarquer, JavaScript le permet.
Redéclarer une variable est utile dans les situations où il est impossible de savoir si la variable a déjà été définie.
En redéclarant une variable de manière conditionnelle, comme le fait le code de suivi de Google Analytics, il permet à une variable de provenir de plusieurs emplacements en toute sécurité.
Dans cet exemple, un autre code utilisant la variable _gaq
pourrait également rechercher une variable _gaq
prédéfinie. S'il existe, il sait qu'il peut l'utiliser. S'il n'existe pas, il sait qu'il doit le définir avant d'essayer de l'utiliser.
Pourquoi devrais-je redéclarer une variable?
Tu ne devrais pas. Cela crée du code déroutant.
Est-ce pratique dans certaines situations?
Non.
En javascript, il n'y a pas de portée de bloc, il est donc conseillé de redéclarer une variable à des fins de clarification. cela fait un meilleur code.
Par exemple:
for (var x=0; x< 100; x++) { }
alert(x); //In most languages, x would be out of scope here.
//In javascript, x is still in scope.
//redeclaring a variable helps with clarification:
var x = "hello";
alert(x);
Il ne perd pas sa valeur à cause deLevage
var x = 5;
var x;
// this is same as
var x; // undefined;
x = 5;
Ainsi, lorsque vous dites "Si vous redéclarez une variable JavaScript, elle ne perdra pas sa valeur".
Comme indiqué par hissage, la ou les déclarations, toutes en haut, se déplacent vers le haut. Et ensuite la variable est assignée.
var x = 25;
var x; // redeclare first time
var x; // redeclare second time
// is same as
var x; // undefined
var x; // Not sure if this happens, but doesn't make a difference, it's still undefined
x = 25;
Pour ce qui est de l'aspect pratique, cela arrive parfois. Regardez la réponse de @ steveoliver.
En général, il peut être considéré comme mauvais d’avoir des assignations var
après d’autres déclarations en raison du problème de levage ( voir ici ). En utilisant le "modèle de variable unique" ( voir ici ), les redéclarations ne peuvent se produire que dans l'exemple Google Analtyics de Steve Oliver. Je reformulerais l'exemple ci-dessus pour:
var x, max = 100; // no further var declarations afterwards!
for (x = 0; x < max; x++) { }
alert(x);
// redeclaration 'var x = "hello"' doesn't make any sense here
// and would be complained about by JSLint/-Hint
x = 'hello';
alert(x);
Une redéclaration peut toutefois avoir un sens lorsque vous utilisez des valeurs par défaut pour des paramètres facultatifs (ce qui correspond à l'exemple de Google Analytics, je suppose):
function abc(param1) {
var param1 = param1 || 'default value';
}