Sobes.tech
Middle+

Que sera-t-il affiché dans la console lors de l'appel à typeof a et typeof b en dehors d'une fonction auto-invoquée (IIFE) utilisant var? Comment le comportement changera-t-il en mode strict?

sobes.tech IA

Réponse de l'IA

Si à l'intérieur d'une IIFE, des variables sont déclarées avec var, par exemple:

(function() {
  var a = 10;
  b = 20; // sans var
})();

console.log(typeof a); // "undefined"
console.log(typeof b); // "number"

La variable a déclarée avec var à l'intérieur de la fonction est locale et inaccessible de l'extérieur, donc typeof a renverra "undefined".

La variable b déclarée sans var, let ou const, dans un mode non strict, conduit à la création d'une variable globale. Donc, typeof b renverra "number".

En mode strict ('use strict';), tenter d'assigner à une variable non déclarée (b = 20;) provoquera une erreur ReferenceError, et la variable globale ne sera pas créée. Ainsi, en dehors de la fonction, les deux variables ne seront pas accessibles, et typeof a et typeof b renverront "undefined" (ou une erreur sera levée avant).