Maison  >  Article  >  interface Web  >  Comment mieux comprendre les types de variables JavaScript et les portées des variables

Comment mieux comprendre les types de variables JavaScript et les portées des variables

伊谢尔伦
伊谢尔伦original
2017-07-18 10:19:311219parcourir

Type de variables

Javascript est différent des langages tels que Java et C. C'est un langage non typé et faiblement détecté. Sa définition des variables ne nécessite pas de déclarer le type de variable. Nous pouvons attribuer différents types de données à la même variable par affectation. Par exemple :

i=100;//Number类型 
i="variable";//String类型 
i={x:4};//Object类型 
i=[1,2,3];//Array类型

Bien que cette fonctionnalité de JS rende notre codage plus flexible, elle présente également un inconvénient, qui n'est pas propice au débogage. La faible détection du compilateur nous rend assez pénible de maintenir un code long. .

Variables globales et variables locales
Lorsque l'analyseur JS est exécuté, il construira d'abord un objet global dans l'environnement d'exécution, et les propriétés globales que nous définissons sont utilisées comme objets . Lecture de propriété, dans le code de niveau supérieur, nous pouvons y accéder en utilisant le mot-clé this et l'objet window. Les variables locales dans le corps de la fonction n'existent que dans l'objet appelant généré lors de l'exécution de la fonction. Les variables locales sont détruites immédiatement lorsque la fonction est exécutée. Par conséquent, en programmation, nous devons réfléchir à la façon de déclarer les variables de manière raisonnable, ce qui non seulement réduit la surcharge de mémoire inutile, mais évite également en grande partie les problèmes de débogage causés par la définition répétée des variables et l'écrasement des variables définies précédemment.

Portée des variables
  La portée des variables est un détail critique dans tout langage de programmation. La portée des variables dans JS est plus libre que celle des langages tels que JAVA et C. Une fonctionnalité importante est que les variables JS n'ont pas de portée au niveau du bloc. Les variables de la fonction sont valides dans l'ensemble de la fonction. le code suivant :

<SCRIPT LANGUAGE="JavaScript" type="text/javascript"> 
//定义一个输出函数 
function outPut(s){ 
document.writeln(s) 
} 
//全局变量 
var i=0; 
//定义外部函数 
function outer(){ 
//访问全局变量 
outPut(i); // 0 
//定义一个类部函数 
function inner(){ 
//定义局部变量 
var i = 1; 
// i=1; 如果用隐式申明 那么就覆盖了全局变量i 
outPut(i); //1 
} 
inner(); 
outPut(i); //0 
} 
outer(); 
</SCRIPT>

Le résultat de sortie est 0 1 0. D'après ce qui précède, il peut être prouvé que si JS utilise var pour déclarer une variable dans le corps de la fonction, alors cette variable est et n'est que valide dans le corps de la fonction. Lorsque la fonction se termine, la variable locale peut être détruite.
En raison des fonctionnalités JS ci-dessus, il existe un autre problème clé qui nécessite une attention particulière. ActionScript a déjà été utilisé. Bien que JS et lui soient tous deux basés sur la norme ECMA, c'est légèrement différent ici. Par exemple, le code suivant :

<SCRIPT LANGUAGE="JavaScript" type="text/javascript"> 
//定义一个输出函数 
function outPut(s){ 
document.writeln(s) 
} 
//全局变量 
var i=0; 
//定义外部函数 
function outer(){ 
//访问全局变量 
outPut(i); // 0 
//定义一个类部函数 
function inner(){ 
outPut(i); //undefiend 
var i=1; 
outPut(i); //1 
} 
inner(); 
outPut(i); //0 
} 
outer(); 
</SCRIPT>

Portée de la variable JS

<script language ="javascript" type ="text/javascript" > 
var a = "change"; 
function fun() { 
alert(a);//输出undefined 
var a = "改变了"; 
alert(a);//输出改变了 
} 
alert(a);//输出change 
fun(); 
</script>

var définit une variable dans la portée, avant que a soit affiché pour la première fois , JS a attribué un à change dans l'analyse de pré-compilation, donc le changement est généré pour la première fois Lorsque la fonction fun() est appelée, JS crée une nouvelle portée et initialise les valeurs de toutes les variables var avant de générer a. n'est pas défini, donc la première sortie de fun() n'est pas définie, et la deuxième sortie a déjà attribué une valeur, donc une nouvelle valeur est sortie ; les deux a sont deux variables différentes à l'intérieur et à l'extérieur de la fonction, telles que :

<script language ="javascript" type ="text/javascript" > 
var b; 
function fun() { 
b = "change"; 
} 
alert(b);//输出undefined 
</script>

La variable b a été définie en dehors de la fonction. Une valeur est attribuée à b dans la fonction, mais la sortie n'est pas définie.

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!

Déclaration:
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