Académique Documents
Professionnel Documents
Culture Documents
différence ?
Var
Portée de var
La portée signifie essentiellement où ces variables sont disponibles pour être utilisées.
var les déclarations ont une portée globale ou une portée fonction/locale.
La portée est globale lorsqu'une var variable est déclarée en dehors d'une fonction.
Cela signifie que toute variable déclarée à var l'extérieur d'un bloc fonction est
disponible pour être utilisée dans toute la fenêtre.
var est une fonction étendue lorsqu'elle est déclarée dans une fonction. Cela signifie
qu'il est disponible et accessible uniquement dans cette fonction.
function newFunction() {
var hello = "hello";
}
Ici, greeter est de portée globale car il existe en dehors d'une fonction alors qu'il
hello est de portée de fonction. Nous ne pouvons donc pas accéder à la variable
hello en dehors d'une fonction. Donc si on fait ça :
function newFunction() {
var hello = "hello";
}
console.log(hello); // error: hello is not defined
et ceci aussi
Levage du var
Le levage est un mécanisme JavaScript où les variables et les déclarations de fonction
sont déplacées vers le haut de leur portée avant l'exécution du code. Cela signifie que
si nous faisons ceci :
console.log (greeter);
var greeter = "say hello"
var greeter;
console.log(greeter); // greeter is undefined
greeter = "say hello"
Ainsi, var les variables sont hissées au sommet de leur portée et initialisées avec une
valeur de undefined .
if (times > 3) {
var greeter = "say Hello instead";
}
Ainsi, puisque times > 3 renvoie vrai, greeter est redéfini en "say Hello instead" .
Bien que ce ne soit pas un problème si vous voulez sciemment greeter être redéfini,
cela devient un problème lorsque vous ne réalisez pas qu'une variable greeter a déjà
été définie auparavant.
Si vous avez utilisé greeter d'autres parties de votre code, vous pourriez être surpris
du résultat que vous pourriez obtenir. Cela entraînera probablement beaucoup de
bogues dans votre code. C'est pourquoi let et const sont nécessaires.
Laisser
let est maintenant préféré pour la déclaration des variables. Ce n'est pas une surprise
car il s'agit d'une amélioration des var déclarations. Cela résout également le
problème var que nous venons de couvrir. Voyons pourquoi il en est ainsi.
Ainsi, une variable déclarée dans un bloc avec let n'est disponible que pour une
utilisation dans ce bloc. Permettez-moi d'expliquer cela avec un exemple:
if (times > 3) {
let hello = "say Hello instead";
console.log(hello);// "say Hello instead"
}
console.log(hello) // hello is not defined
Nous voyons que l'utilisation hello en dehors de son bloc (les accolades où il a été
défini) renvoie une erreur. C'est parce que let les variables ont une portée de bloc.
Cependant, si la même variable est définie dans des portées différentes, il n'y aura pas
d'erreur :
Pourquoi n'y a-t-il pas d'erreur ? En effet, les deux instances sont traitées comme des
variables différentes car elles ont des portées différentes.
Ce fait fait let un meilleur choix que var . Lorsque vous utilisez let , vous n'avez pas
à vous soucier si vous avez déjà utilisé un nom pour une variable car une variable
n'existe que dans sa portée.
De plus, étant donné qu'une variable ne peut pas être déclarée plus d'une fois dans
une portée, le problème évoqué précédemment qui se produit avec var ne se produit
pas.
Levage de laisser
Tout comme var , let les déclarations sont hissées au sommet. Contrairement à
var qui est initialisé en tant que undefined , le let mot-clé n'est pas initialisé. Donc, si
vous essayez d'utiliser une let variable avant la déclaration, vous obtiendrez un
Reference Error .
Const.
Variables déclarées avec les const valeurs maintenues constantes. const les
déclarations partagent certaines similitudes avec let les déclarations.
ni ceci :
Ce comportement est quelque peu différent lorsqu'il s'agit d'objets déclarés avec
const . Bien qu'un const objet ne puisse pas être mis à jour, les propriétés de ces
objets peuvent être mises à jour. Par conséquent, si nous déclarons un const objet
comme ceci :
const greeting = {
message: "say Hi",
times: 4
}
greeting = {
words: "Hello",
number: "five"
} // error: Assignment to constant variable.
Levage de const
Tout comme let , const les déclarations sont hissées au sommet mais ne sont pas
initialisées.
Donc, juste au cas où vous auriez manqué les différences, les voici :
var les déclarations sont de portée globale ou de portée de fonction tandis que
let et const sont de portée de bloc.
var les variables peuvent être mises à jour et re-déclarées dans son périmètre ;
let les variables peuvent être mises à jour mais pas re-déclarées ; const les
variables ne peuvent être ni mises à jour ni re-déclarées.
Ils sont tous hissés au sommet de leur portée. Mais tandis que var les variables
sont initialisées avec undefined , let et const les variables ne sont pas
initialisées.
Tandis que var et let peuvent être déclarés sans être initialisés,
const doivent être initialisés lors de la déclaration.