open

Javascript : comprendre var, let et const

#1 Quand utiliser var ? open

La réponse est simple : il ne faut plus utiliser var. A la place il faut utiliser let et const.

Toutefois var a été utilisé dans pas mal de codes qui existent encore et vous pourriez avoir besoin de lire ces codes donc vous pourriez avoir encore besoin de "travailler" avec var.

var est le mot réservé historique utilisé pour déclarer une variable. Il présente un certain nombre de défauts. Certains sont corrigés par l'utilisation du mode strict mais la solution préconisée à partir d'ES6 c'est d'utiliser let et const.

#2 Quand utiliser let ou const ? open

Vous devez utiliser let pour déclarer une variable.

Vous devez utiliser const pour déclarer une constante.

Vous allez peut être penser que vous n'avez pas souvent besoin de déclarer des constantes. En fait, en Javascript, lorsque vous déclarez un objet, un tableau ou une fonction anonyme, vous récupérez une référence qui est une adresse mémoire. Cette adresse mémoire vous ne pouvez pas vous permettre de la perdre car vous perdriez l'accès à votre objet à votre tableau ou à votre fonction. Donc cette référence elle ne doit pas être réaffectée. Et c'est la spécificité d'une constante.

Donc dans ces cas là vous avez intérêt à utiliser le mot réservé const pour vos déclarations de sorte que si à un autre endroit du code vous essayez de réaffecter votre référence et bien l'interpréteur Javascript vous préviendra. On peut dire aussi que sur le plan de la sémantique c'est logique d'utiliser une constante pour une valeur qui a vocation de ne pas changer de valeur.

Tester le code

#3 Spécificité de let et const : la portée locale à un bloc open

Lorsque l'on déclare une variable avec var il n'y a que deux portées possibles. La portée globale aux scripts de la page web et la portée locale à une fonction.

Tester le code

En particulier il y a quelque chose de choquant pour les programmeurs qui viennent d'autres langages tel que le langage C par exemple. Si vous déclarez une variable dans un bloc avec var et bien cette variable reste visible en dehors du bloc.

Cette situation est gênante notamment dans les blocs d'instructions qui sont associés à des boucles. Par exemple l'indice de boucle dans une boucle for reste visible après que l'on soit sortie de la boucle.

L'utilisation de let ou de const permet de créer une portée locale au bloc. Ce qui fait qu'à partir d'ES6 l'unité de portée est le bloc et non plus la fonction.

Tester le code

#4 Bien comprendre const open

Lorsque vous utilisez const avec une référence, on a déjà vu que vous ne pouviez pas modifier la valeur de cette référence mémoire, par contre vous pouvez quand même modifier le contenu de la mémoire.

Tester le code

Notre obj est une référence qui pointe vers une adresse mémoire. Vous ne pouvez pas changer cette adresse mémoire mais vous pouvez changer le contenu de la mémoire. C'est ce que l'on fait lorsque l'on ajoute une propriété à cet objet et que l'on modifie ensuite la valeur de cette propriété.

Notez également que si vous passez une référence en argument d'une fonction vous pouvez faire la même chose à l'intérieur de la fonction. En passant une référence en argument d'une fonction vous pouvez modifier l'objet à l'intérieur de la fonction. J'ai codé un exemple dans ce tutoriel de la formation précédente "Les bases de Javascript".

Comprendre const