JavaScript : variables, types et égalité

let, const et var avec leur portée, les types primitifs et typeof, les conversions implicites, == face à === et les valeurs fausses.

  • 24 cartes
  • 3 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier

Quelques cartes du deck

  • let et const : de quoi s'agit-il ?

    Voir la réponse

    Les deux déclarations modernes de variable, limitées au bloc où elles sont écrites ; la première autorise de réaffecter, la seconde l'interdit.

    const fige le lien entre le nom et la valeur, pas le contenu : const t = []; t.push(1) fonctionne, t = [] provoque TypeError: Assignment to constant variable.

  • Qu'affiche ce programme ?

    ```javascript
    console.log(typeof (1 + '2'), typeof ('3' * '4'), typeof null);
    `

    • string number object
    • number number null
    • string string object
    • string number null
    Voir la réponse

    string number object

    1 + '2' concatène et donne la chaîne '12'. '3' * '4' convertit en nombres et donne 12. typeof null vaut 'object', une erreur historique conservée pour ne pas casser le web.

  • Les types primitifs de JavaScript sont string, number, boolean, undefined, null, symbol et … ; tout le reste (tableaux, fonctions, objets) est de type …, une fonction étant un objet appelable, même si typeof répond 'function' pour elle.

    Voir la réponse

    Les types primitifs de JavaScript sont string, number, boolean, undefined, null, symbol et bigint ; tout le reste (tableaux, fonctions, objets) est de type object, une fonction étant un objet appelable, même si typeof répond 'function' pour elle.

    Une valeur primitive ne se modifie pas : une méthode comme toUpperCase() renvoie une nouvelle chaîne. Un objet, lui, se modifie en place.

  • var : de quoi s'agit-il ?

    Voir la réponse

    Ancienne déclaration de variable, limitée à la fonction et non au bloc, et qui existe (avec la valeur undefined) avant sa ligne de déclaration.

    Un var écrit dans un if reste visible après lui, ce qui cache des bugs. Avec let, lire q avant la ligne let q = 1; lève ReferenceError: Cannot access 'q' before initialization.

  • Que se passe-t-il à l'exécution de ce programme ?

    ```javascript
    const prix = 10;
    prix = 12;
    console.log(prix);
    `

    • Il affiche 12, const n'interdisant que le changement de type
    • Il s'arrête à la ligne 2 avec TypeError: Assignment to constant variable.
    • Il affiche 10, la ligne 2 étant ignorée sans erreur
    • Il ne démarre pas : SyntaxError dès la lecture du fichier
    Voir la réponse

    Il s'arrête à la ligne 2 avec TypeError: Assignment to constant variable.

    Réaffecter une constante est une erreur d'exécution, pas de syntaxe : la ligne 1 s'exécute, la ligne 2 lève l'exception. Pour une valeur qui doit changer, on déclare avec let.