Middle+
Există un cod cu o funcție autoapelantă (IIFE) folosind var. Ce va fi afișat în consolă la apelarea typeof a și typeof b în afara funcției? Cum se va schimba comportamentul în modul strict?
sobes.tech AI
Răspuns de la AI
Dacă în interiorul IIFE sunt declarate variabile folosind var, de exemplu:
(function() {
var a = 10;
b = 20; // fără var
})();
console.log(typeof a); // "undefined"
console.log(typeof b); // "number"
Variabila a declarată cu var în interiorul funcției este locală și inaccesibilă din exterior, așa că typeof a va returna "undefined".
Variabila b declarată fără var, let sau const, în modul non-strict, duce la crearea unei variabile globale. Prin urmare, typeof b va returna "number".
În modul strict ('use strict';), încercarea de a atribui o valoare unei variabile nedeclarați (b = 20;) va genera o eroare ReferenceError, iar variabila globală nu va fi creată. Astfel, ambele variabile din afara funcției nu vor fi accesibile, iar typeof a și typeof b vor returna "undefined" (sau va fi aruncată o eroare înainte de aceasta).