En JavaScript, les variables sont divisées en variables locales et variables globales en fonction de leurs différentes portées. Les variables définies directement sont des variables globales, et les variables globales sont accessibles par tous les scripts. Les variables définies dans les fonctions sont des variables locales et uniquement des variables locales. Valable dans les fonctions.
Si les variables globales et les variables locales utilisent le même nom de variable, la variable locale écrasera la variable globale.
Exemple de code :
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>js中全局变量与局部变量</title> </head> <body> <script type="text/javascript"> var a = "全局变量"; function test1() { var a = "局部变量"; alert(a); } function test2() { alert(a); var a = "局部变量"; alert(a); } function test3() { alert(a); a = "局部变量"; alert(a); } </script> <input type="button" value="test1" onclick="test1()"/> <input type="button" value="test2" onclick="test2()"/> <input type="button" value="test3" onclick="test3()"/> </body> </html>
Le résultat de l'opération est le suivant :
Cliquez sur test1 pour faire apparaître les variables locales.
Cliquez sur test2, un élément non défini apparaît, puis les variables locales apparaissent
Cliquez sur test3 pour afficher les variables globales, puis affichez les variables locales
Voici la différence entre utiliser var et ne pas l'utiliser :
Si vous utilisez var, alors le programme forcera la définition d'une nouvelle variable.
Si var n'est pas utilisé, Le système recherchera d'abord si la variable existe dans le contexte actuel, et ne redéfinira une nouvelle variable que si elle n'existe pas.
Dans test3, les variables utilisées sont toutes des variables globales. La première fois que la variable globale est directement sortie, la deuxième fois est utilisée après avoir directement attribué une valeur à la variable globale.
Dans test1 et test2, l'utilisation de var pour définir une nouvelle variable portant le même nom dans la fonction entraînera l'écrasement des variables de la fonction par rapport à la variable globale. Donc dans test2 : la première sortie a est la variable locale a qui a été écrasée, mais aucune valeur initiale n'est donnée, donc le résultat non défini apparaîtra. Utiliser des variables de cette manière est en réalité erroné et doit être évité.