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).