Maison  >  Article  >  interface Web  >  Introduction à la définition et au stockage de variables dans les compétences JavaScript_javascript

Introduction à la définition et au stockage de variables dans les compétences JavaScript_javascript

WBOY
WBOYoriginal
2016-05-16 16:22:591143parcourir

Contrairement aux langages de programmation tels que C et Java, les variables en JavaScript ne sont pas typées et toutes les définitions de variables utilisent le mot-clé var :


Copier le code Le code est le suivant :

var a;
var m, n;
var x=42, y="test";


Si aucune valeur n’est attribuée à une variable après sa définition, la valeur de la variable n’est pas définie. Par exemple, les valeurs des trois variables a, m et n dans le code ci-dessus sont toutes indéfinies.

Les variables en JS étant sans type, il est tout à fait possible d'attribuer différents types de valeurs à la même variable, comme :


Copier le code Le code est le suivant :

var b = "temp";
console.log(typeof b);//string
b = 108;
console.log(typeof b);//numéro


En plus des différents types d'affectations à la même variable, JavaScript peut également définir des variables à plusieurs reprises ; si vous faites cela, l'instruction de définition de variable après la première fois est équivalente à l'instruction d'affectation :


Copier le code Le code est le suivant :

var c = "bonjour";
console.log(c);//bonjour
var c = vrai;
console.log(c);//true


Dans le mode strict du standard ECMAScript, toutes les définitions de variables doivent utiliser le mot-clé var. Si le mode strict n'est pas utilisé, lorsqu'un programme JS attribue une valeur à une variable non définie, le programme créera une propriété avec le même nom que la variable dans l'objet global JS, c'est-à-dire qu'une nouvelle variable globale sera créée. Cette approche posera de nombreux problèmes (par exemple, pollution variable globale entre plusieurs programmes JS, etc.) et apportera beaucoup de problèmes à la maintenance ultérieure. Par conséquent, dans le processus de développement actuel, cette approche doit être évitée autant que possible ;

Stockage des variables

Si la variable définie est une variable globale et que le mot-clé var n'est pas utilisé dans le processus de définition de la variable, alors la variable existera en tant qu'attribut de l'objet global, qui peut être obtenu en accédant à l'attribut correspondant de celui-ci (global objet), ou Il peut être supprimé de l'objet global en utilisant le mot clé delete :


Copier le code Le code est le suivant :

var e = "globalVariableValue";//défini en dehors de toute fonction, c'est une variable globale, mais ne se stocke pas dans "this"
f = "globalVariableValue2";
this.g = "globalVariableValue3";
console.log(this.e);//undéfini
console.log(this.f);//globalVariableValue2
console.log(this.g);//globalVariableValue3

supprimer f;
supprimer g;
console.log(this.f);//undéfini
console.log(this.g);//undéfini


Pour chaque appel de fonction en JavaScript, JavaScript créera un objet local pour stocker les variables locales définies dans la fonction ; s'il existe une fonction imbriquée définie dans la fonction, JavaScript créera un objet local une fois la fonction définie. objet local à l'intérieur de l'objet local. Pour une fonction, il y a autant de couches d’objets locaux imbriqués qu’il y a de couches de définitions de fonctions imbriquées à l’intérieur. Cet objet local est appelé "objet d'appel de fonction" ("objet d'appel" dans ECMAScript 3, renommé "enregistrement d'environnement déclaratif" dans ECMAScript 5, mais personnellement, je pense que le nom dans ECMAScript 3 est plus facile à comprendre).

Contrairement à l'objet global, JavaScript ne fournit aucun moyen d'accéder à ces objets locaux (objets d'appel de fonction). Par conséquent, les développeurs ne peuvent pas opérer sur ces objets locaux. Cependant, comprendre ces objets d'appel de fonction sera d'une grande aide pour comprendre certains concepts en JavaScript, tels que la portée des variables et les fermetures.

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