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