Cet article traite de la différence entre VAR et NO VAR en JavaScript. La portée des déclarations variables dans JS est basée sur les fonctions, nous voyons donc souvent comment éviter la pollution mondiale variable.
(fonction(){ // ... })();À l'intérieur d'une fonction, les variables avec VAR et sans VAR sont différentes. Il existe des VAR qui déclarent les variables locales, et il n'y a pas de VARS, déclarées des variables globales, vous pouvez donc exposer les choses d'interface à l'extérieur.
Lors de la déclaration des variables dans la portée globale, Var et Var semblent les mêmes. Nous savons que les variables globales déclarées sont les propriétés de Windows. Qu'ils soient les mêmes, nous découvrons la différence à travers la méthode de requête d'attribut fournie par ECMASCRPIT5.
var ffff = 2; window.fffa = 3; FFB = 4; this.ffc = 4; var fftx = object.getownpropertyDescriptor (fenêtre, 'ffff'); // configurable: false, énumérable: true, valeur: 2, écrivable: true var ffatx = object.getownpropertyDescriptor (fenêtre, 'fffa'); // configurable: true, énumérable: true, valeur: 2, écrivable: true var ffbtx = object.getownpropertyDescriptor (fenêtre, 'fffa'); // configurable: true, énumérable: true, valeur: 2, écrivable: true var ffbtx = object.getownpropertyDescriptor (fenêtre, 'ffb'); // configurable: true, énumérable: true, valeur: 2, écrivable: true var ffctx = object.getownpropertyDescriptor (fenêtre, 'ffc'); // configurable: vrai, énumérable: vrai, valeur: 2, écrivable: true
Grâce à ce qui précède, nous avons constaté qu'il y avait encore une différence. Nous avons utilisé la suppression pour vérifier que l'attribut avec la configuration false ne peut pas être supprimé. C'est-à-dire que les propriétés de l'objet global déclaré via la variable VAR ne peuvent pas être supprimées. Nous constatons également que les propriétés de l'objet global créées par la déclaration de fonction ne peuvent pas être supprimées.
supprimer ffff; // ne peut pas supprimer de supprimer fffa; // peut supprimer la suppression de FFB; // peut supprimer la suppression de FFC; // peut supprimer
La conclusion est qu'il existe une différence entre l'ajout de VAR et la déclaration des variables globales sans VAR.
Il est légal et inoffensif de déclarer à plusieurs reprises une déclaration utilisant une déclaration VAR. Si la déclaration est répétée et que l'affectation est fournie, elle n'est pas différente de l'énoncé de cession générale. Si vous essayez de lire une variable qui n'a pas été déclarée, JS rapportera une erreur.
Les variables déclarées ou les fonctions internes dans le cadre de JavaScript sont visibles dans le corps de la fonction. Ce qui signifie que la fonction peut déjà être disponible avant sa définition. Il existe deux façons de définir une fonction, l'une est l'expression de la définition de la fonction, et l'autre instruction de déclaration de fonction.
// Fonction Définition Expression var fns = function () {// ...}; // Fonction Déclaration de fonction Fonction fns () {// ...}L'instruction de déclaration de fonction "a été avancée" en haut du script externe ou de la portée de la fonction externe, de sorte qu'une fonction déclarée de cette manière peut être appelée par le code qui remonte avant lui. Dans les expressions de définition de fonction, la déclaration de la variable est avancée, mais l'affectation de la variable n'est pas avancée, donc les fonctions définies dans l'expression ne peuvent pas être appelées avant la définition de la fonction.
(fonction () {testa (); // imprimer testa testB (); // signaler une erreur: il est invité que non défini n'est pas une fonction console.log (testc); // indéfini, si elle est déplacée vers ce qui précède, il est ok de faire une fonction testa () {console.log ("testa");} var testb = fonction () {console.log (""} var test =) {console.log ("Tesb"); "testc";}) ();Bien sûr, lorsque nous déclarons les variables et les fonctions, nous devons respecter les spécifications de base, et les variables et les déclarations de fonction doivent être à l'avance.