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