Sobes.tech
Middle+

Cosa verrà visualizzato nella console chiamando typeof a e typeof b fuori da una funzione auto-invocata (IIFE) che utilizza var? Come cambierà il comportamento in modalità strict?

sobes.tech AI

Risposta dell'AI

Se all'interno di una IIFE vengono dichiarate variabili usando var, ad esempio:

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

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

La variabile a dichiarata con var all'interno della funzione è locale e non accessibile dall'esterno, quindi typeof a restituirà "undefined".

La variabile b dichiarata senza var, let o const, in modalità non strict, porta alla creazione di una variabile globale. Quindi, typeof b restituirà "number".

In modalità strict ('use strict';), tentare di assegnare a una variabile non dichiarata (b = 20;) genererà un errore ReferenceError, e la variabile globale non sarà creata. Pertanto, entrambe le variabili non saranno accessibili fuori dalla funzione, e typeof a e typeof b restituiranno "undefined" (o verrà sollevato un errore prima di ciò).