Maison > interface Web > js tutoriel > Comment déclarer la portée d'une variable JS ? Explication détaillée des exemples de portée dans les fonctions

Comment déclarer la portée d'une variable JS ? Explication détaillée des exemples de portée dans les fonctions

伊谢尔伦
Libérer: 2017-07-18 10:50:44
original
1244 Les gens l'ont consulté

La portée d'une variable fait référence à la visibilité de la variable, tandis que le cycle de vie (période de survie) examine la variable sous un autre angle.

La portée des variables dans JS est divisée en variables globales et variables locales. Celles définies dans la fonction sont appelées variables locales, et celles définies en dehors de la fonction sont appelées variables globales. ("Les choses en dehors d'une fonction sont appelées variables globales" sont relatives. Le principe discuté ici est que les variables sont explicitement déclarées avec var. Les variables définies sans var dans une fonction sont des variables globales par défaut. Bien sûr, déclarer des variables sans var est mal vu. ).

var glob = 4;//函数外声明全局变量 
function fun() { 
    var height = 20; //函数内用var声明的是局部变量 
    weight = 50; //函数内不用var声明的是全局变量 
} 
fun(); 
alert(weight);
Copier après la connexion

Il n'y a pas de portée au niveau du bloc dans JS, c'est-à-dire qu'elle est entourée d'accolades {}. Il y en a en Java. Écrivez le code suivant dans la méthode principale

public static void main(String... args) { 
  for(int i=0;i<5;i++) { 
  } 
    { 
        int j=10; 
    } 
    int z = 20; 
    System.out.println(i); // i不可见,语法分析时报错,即编译不通过 
    System.out.println(j); // j不可见,语法分析时报错,即编译不通过 
    System.out.println(z); // z可见,输出20 
}
Copier après la connexion

mais si en JS

for(var i=0;i<5;i++) { 
} 
var obj = {name:"Lily"}; 
for(var attr in obj) { 
} 
{ 
  var j=10; 
} 
alert(i);//输出4,没有块级作用域 
alert(attr); //输出name,没有块级作用域 
alert(j);//输出10,没有块级作用域
Copier après la connexion

cela illustre également un problème, évitez d'utiliser une boucle for dans la portée globale et déclarez les variables à la en même temps, sinon cela entraînerait une pollution de la portée globale de la dénomination.

Bien sûr, JS1.7 a proposé le mot-clé let pour déclarer les variables, qui ne s'applique qu'à la portée de l'instruction for.

for(let i=0;i<5;i++) { 
   //todo 
} 
alert(i);//运行时报错,提示i未定义
Copier après la connexion

Exemple de portée des variables dans une fonction js :

<html>
<head>
</head>
<body>
<script type="text/javascript">
var a = 5;
var c = 3;
function t(){
 var a = 6;
 var b = 10;
 document.write(a+&#39;-----&#39;+b);
 document.write(c);
}
t();
</script>
</body>
</html>
Copier après la connexion

Différent de php, si vous souhaitez appeler une variable dans une fonction js, il la recherche d'abord dans le fonction. Par exemple, dans l'exemple, a est égal à 6 ; mais c est introuvable dans le corps de la fonction, donc il recherchera en dehors du corps de la fonction. S'il le trouve, il sera appelé. signalera une erreur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal