Dans ce didacticiel, vous découvrirez la portée des variables en JavaScript à l'aide d'exemples.
La portée fait référence à la disponibilité de variables et de fonctions dans certaines parties du code.
En JavaScript, une variable a deux types de portée:
- Portée mondiale
- Portée locale
Portée mondiale
Une variable déclarée en haut d'un programme ou en dehors d'une fonction est considérée comme une variable de portée globale.
Voyons un exemple de variable de portée globale.
// program to print a text let a = "hello"; function greet () ( console.log(a); ) greet(); // hello
Dans le programme ci-dessus, la variable a est déclarée en haut d'un programme et est une variable globale. Cela signifie que la variable a
peut être utilisée n'importe où dans le programme.
La valeur d'une variable globale peut être modifiée à l'intérieur d'une fonction. Par exemple,
// program to show the change in global variable let a = "hello"; function greet() ( a = 3; ) // before the function call console.log(a); //after the function call greet(); console.log(a); // 3
Dans le programme ci-dessus, la variable a est une variable globale. La valeur de a est bonjour. Ensuite, la variable a est accédée à l'intérieur d'une fonction et la valeur passe à 3.
Par conséquent, la valeur d'un change après l'avoir modifiée dans la fonction.
Remarque : Il est recommandé d'éviter d'utiliser des variables globales car la valeur d'une variable globale peut changer dans différents domaines du programme. Cela peut introduire des résultats inconnus dans le programme.
En JavaScript, une variable peut également être utilisée sans la déclarer. Si une variable est utilisée sans la déclarer, cette variable devient automatiquement une variable globale.
Par exemple,
function greet() ( a = "hello" ) greet(); console.log(a); // hello
Dans le programme ci-dessus, la variable a est une variable globale.
Si la variable était déclarée en utilisant let a = "hello"
, le programme lèverait une erreur.
Remarque : En JavaScript, il y a "strict mode";
dans lequel une variable ne peut pas être utilisée sans la déclarer. Pour en savoir plus sur strict, visitez JavaScript Strict.
Portée locale
Une variable peut également avoir une portée locale, c'est-à-dire qu'elle n'est accessible que dans une fonction.
Exemple 1: variable d'étendue locale
// program showing local scope of a variable let a = "hello"; function greet() ( let b = "World" console.log(a + b); ) greet(); console.log(a + b); // error
Production
helloWorld Uncaught ReferenceError: b n'est pas défini
Dans le programme ci-dessus, la variable a est une variable globale et la variable b est une variable locale. La variable b n'est accessible qu'à l'intérieur de la fonction saluer. Par conséquent, lorsque nous essayons d'accéder à la variable b en dehors de la fonction, une erreur se produit.
let est à portée de bloc
Le let
mot-clé a une portée de bloc (la variable n'est accessible que dans le bloc immédiat).
Exemple 2: variable à portée de bloc
// program showing block-scoped concept // global variable let a = 'Hello'; function greet() ( // local variable let b = 'World'; console.log(a + ' ' + b); if (b == 'World') ( // block-scoped variable let c = 'hello'; console.log(a + ' ' + b + ' ' + c); ) // variable x cannot be accessed here console.log(a + ' ' + b + ' ' + c); ) greet();
Production
Hello World Hello World hello Uncaught ReferenceError: x n'est pas défini
Dans le programme ci-dessus, variable
- a est une variable globale. Il est accessible n'importe où dans le programme.
- b est une variable locale. Il n'est accessible qu'à l'intérieur de la fonction
greet
. - c est une variable à portée de bloc. Il n'est accessible qu'à l'intérieur du
if
bloc d'instructions.
Par conséquent, dans le programme ci-dessus, les deux premiers console.log()
fonctionnent sans aucun problème.
Cependant, nous essayons d'accéder à la variable de portée de bloc c en dehors du bloc dans le troisième console.log()
. Cela lancera une erreur.
Remarque : dans JavaScript, la var
portée est fonction et la portée des let
blocs. Si vous essayez d'utiliser var c = 'hello';
à l'intérieur de l' if
instruction dans le programme ci-dessus, tout le programme fonctionne, car c est traité comme une variable locale.
Pour en savoir plus sur let
versus var
, visitez JavaScript let vs var.