• [^] # Re: Sur le code

    Posté par (site web personnel) . En réponse au journal Balance virtuelle, application éducative javascript. Évalué à 2. Dernière modification le 10 septembre 2019 à 16:22.

    localement, let est limité au bloque tandis que var est limité à la fonction (globalement, il n’y a pas de différence)

    J'essaye au possible d'écrire des fonctions courtes donc effectivement, re-déclarer deux fois la même variable dans une même fonction ne m'arrive pas souvent. Mais il est possible que ça soit intéressant dans d'autres cadres. En tout cas, ça ne permet plus d'écrire ce genre d'horreur :

    function toto() {
     if (...) {
     var toto = 4;
     }
     console.log(toto);
    }

    Avec let, ça ne passe pas.

    en mode « strict », let définie des constantes.

    Non, en mode strict, ce qu'on ne peut pas faire, c'est redéclarer la même variable deux fois dans un même scope.

    Pour faire une "constante" (*), il faut utiliser const.

    Je parlais de "hoisting" plus haut, le var peut être piégeux à cause de ça, let et const ne te permettent pas d'utiliser les variables avant leur déclaration (oui ça semble idiot de faire ça, mais pas mal de développeurs JavaScript usaient et abusaient de ça), et donc, n'avaient pas forcément conscience qu'en déclarant un var toto en plein milieu d'une fonction, toto était en fait remonté en haut de la fonction par l'interpréteur.
    let est ce que var aurait dû être dès le départ.
    Comme === est ce que == aurait dû être dès le départ.
    On constate que de nombreuses améliorations des différentes moutures de JavaScript ont pour objectif de corriger les erreurs de jeunesses du langage.

    (*) en réalité, seule la valeur de variable est constante, on ne peut pas utiliser const pour faire réellement de l'immutabilité, par exemple.

    const obj = { a: 4 };
    obj.a = 5; // parfaitement autorisé

    En pratique, la "fausse" immutabilité de const fait que ce dernier est largement plus utilisé que let dans les programmes depuis ES6. A vue de pif, je dirais que j'utilise 15 fois plus de const que de let. (et plus aucun var)