Noms de variables identiques dans les fonctions en JavaScript
Supposons qu'il existe une variable
num à la fois en dehors et à l'intérieur de la fonction.
Dans ce cas, toute modification
de la variable locale num n'affecte en rien
la variable globale num :
let num = 1; // variable globale
function func() {
let num = 2; // variable locale
console.log(num);
}
func(); // appelle la fonction, affichera 2
console.log(num); // affichera 1 - la variable globale n'a pas changé
Mais, si nous oublions de déclarer la variable locale
num via let, alors à l'intérieur de la fonction
aucune variable locale num ne sera créée,
et la variable globale sera simplement modifiée :
let num = 1;
function func() {
num = 2; // oublié d'écrire let - on modifie la variable externe
console.log(num);
}
func(); // appelle la fonction, affichera 2
console.log(num); // affichera 2 - la variable a changé
Deux situations sont possibles ici : soit nous voulions vraiment
modifier la variable globale (alors
tout va bien), soit nous avons oublié let et avons accidentellement
modifié la variable globale.
Le second cas est une erreur difficile à détecter,
conduisant à un comportement imprévisible du script.
Par conséquent, déclarez toujours toute nouvelle variable
en utilisant let.
Déterminez, sans exécuter le code, ce qui sera affiché dans la console :
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Déterminez, sans exécuter le code, ce qui sera affiché dans la console :
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);