Maison  >  Article  >  interface Web  >  Que sont var, let, const en JavaScript ? Utilisation de var, let, const (code)

Que sont var, let, const en JavaScript ? Utilisation de var, let, const (code)

青灯夜游
青灯夜游original
2018-09-18 15:47:181225parcourir

Ce chapitre vous présentera ce que sont var, let et const en JavaScript ? Utilisation de var, let, const (code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

1. var

est une variable globale déclarée dans la fenêtre globale et est un attribut de la fenêtre objet globale.

var sum = 0
console.log(window.sum)  // 0
console.log(sum);        // 0

Les variables déclarées dans la fonction sont des variables locales

function foo(){
    function bar(a){
        i = 3;
        console.log( a + i );  // 3 之后是无限循环11
    }
    var  i = 0
    for( i ; i <= 10; i++){
        bar( i * 2 )
    }
}
foo()

Ce code peut s'écrire comme ceci

function foo(){
    function bar(a){
        i = 3;
        console.log( a + i );
    }
    var i
    i = 0
    for( i ; i <= 10; i++){
        bar( i * 2 )
    }
}
foo()

La promotion de la fonction précède la promotion des variables, Après en entrant dans la boucle for, définissez le paramètre de la fonction bar sur 0, de sorte que la première sortie soit imprimée comme 3. L'accent est mis sur cet endroit i = 3. Il recherchera la déclaration de i dans la portée actuelle. Sinon, il suivra la chaîne de portée. Recherchez vers le haut et trouvez-le dans foo, donc i dans foo devient 3. Après avoir exécuté i++, nous obtenons i= 4. Lorsque nous exécutons bar, nous obtenons le 11 suivant. Cela continue de boucler

2. Let et const

ES6 sont deux nouvelles façons de déclarer des variables. La déclaration répétée de la même variable dans la même portée n'est pas autorisée. Il n'y a pas de promotion de variable

Comme il n'y a pas de promotion de variable, cette variable ne peut pas être utilisée avant que la variable ne soit déclarée avec var. sera soumis à une promotion variable. , mais la valeur n'est pas définie

Dans ES5, seules les fonctions ont une portée au niveau du bloc, mais dans ES6, il n'y a pas seulement une portée de fonction. C'est grâce à let et const

var b = 1;
{
    let b = 2;
}
console.log(b);  // 1
Les accolades sont équivalentes à une portée au niveau du bloc

var a = []
for(let i=0; i<10;i++){
    a[i] = function(){
        console.log(i);
    };
    console.log(i) //[function,function..]  总共10个
}
console.log(a)
a[8]()  // 8
Après avoir changé let ici en var, vous constaterez que toutes les sorties deviendront 10.

Le i déclaré par var est en fait une variable globale, qui est au même niveau que le tableau a. Chaque fois que la boucle for modifie la valeur de i, elle est copiée en fonction de la valeur d'origine. Lorsque la boucle se termine, i = 10, donc quelle que soit la manière dont l'appel est effectué, la sortie est 10

Le i. déclaré par let n'est que dans le courant Ce bloc est valide. Il y a un bloc pour chaque cycle, donc une nouvelle variable est créée à chaque fois qu'elle boucle i

Il y a une différence entre cont et let, c'est-à-dire const est utilisé pour déclarer des constantes. Une fois déclarée, sa valeur ne peut plus être modifiée. Mais si const déclare une valeur de type référence

const a = {}
a.name = &#39;circle&#39;
console.log(a);   // Object {name: "circle"}
const stocke la valeur d'adresse de cet objet, il ne peut donc garantir que la valeur d'adresse reste inchangée, mais pas les attributs de cet objet. être changé

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