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