var x = 3;
if(1==1){
if(2==2){
var x= 5;
}
}
document.write(x); // outputs 5
Je faisais donc quelques tests pour mieux comprendre le concept de portée locale et globale. Je pensais déclarer x
avec mot-clé var
crée une variable locale et ignore toute variable du même nom dans la portée parente. Par ignorer, je veux dire comment je peux changer la variable x
sans affecter la même variable dans la portée ci-dessus. Mais apparemment, ma compréhension de la définition des variables js est fausse. pourrait s'il vous plaît expliquer pourquoi il se comporte si?
Réponses:
0 pour la réponse № 1Accolades ({...}
) ne crée pas de place pour var
en JavaScript. Alors, quand vous déclarez une variable (x
) portant le même nom (x
) à l'intérieur {...}
il ne crée aucune nouvelle variable mais remplace en réalité la variable précédemment déclarée.
3 pour la réponse № 2
var
déclare une variable locale dans une fonction. Pour les variables locales de portée de bloc, utilisez let
.
var x = 3;
if(1==1){
if(2==2){
let x = 5;
}
}
console.log(x); // prints 3