Middle+
Šta će biti prikazano u konzoli kada pozovete typeof a i typeof b izvan funkcije samopokretne (IIFE) koja koristi var? Kako će se ponašanje promeniti u režimu stroge?
sobes.tech АИ
Одговор од АИ
Ako unutar IIFE-a promenljive su deklarisane pomoću var, na primer:
(function() {
var a = 10;
b = 20; // bez var
})();
console.log(typeof a); // "undefined"
console.log(typeof b); // "number"
Promenljiva a deklarisana pomoću var unutar funkcije je lokalna i nije dostupna spolja, pa će typeof a vratiti "undefined".
Promenljiva b, deklarisana bez var, let ili const, u nestriktom režimu, dovodi do kreiranja globalne promenljive. Zato će typeof b vratiti "number".
U strogo režimu ('use strict';), pokušaj dodeljivanja vrednosti nedeclarisanoj promenljivoj (b = 20;) izazvaće grešku ReferenceError, i globalna promenljiva neće biti kreirana. Tako, van funkcije, obe promenljive neće biti dostupne, i typeof a i typeof b će vratiti "undefined" (ili će biti izazvana greška ranije).