Sobes.tech
Middle+

¿Qué se mostrará en la consola al llamar a typeof a y typeof b desde fuera de una función autoejecutable (IIFE) que usa var? ¿Cómo cambiará el comportamiento en modo estricto?

sobes.tech AI

Respuesta de la IA

Si dentro de una IIFE se declaran variables usando var, por ejemplo:

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

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

La variable a se declara con var dentro de la función, es local y no accesible desde fuera, por lo que typeof a devolverá "undefined".

La variable b se declara sin var, let ni const, lo que en modo no estricto lleva a la creación de una variable global. Por lo tanto, typeof b devolverá "number".

En modo estricto ('use strict';) intentar asignar a una variable no declarada (b = 20;) provocará un error ReferenceError, y la variable global no será creada. Así, fuera de la función ambas variables no estarán accesibles, y typeof a y typeof b devolverán "undefined" (o se lanzará un error antes de esto).