Sobes.tech
Middle+

Van egy kód önhívó függvénnyel (IIFE) és var használatával. Mit ír ki a konzol a typeof a és typeof b hívásakor a függvényen kívül? Hogyan változik a viselkedés szigorú módban?

sobes.tech MI

Válasz az MI-től

Ha az IIFE belsejében változókat var-ral deklarálsz, például:

(function() {
  var a = 10;
  b = 20; // var nélkül
})();

console.log(typeof a); // "undefined"
console.log(typeof b); // "number"

Az a változó, amit var-ral deklaráltál a függvényen belül, helyi és kívülről nem elérhető, ezért a typeof a "undefined" lesz.

A b változó, amit var, let vagy const nélkül deklarálsz, nem szigorú módban globális változót hoz létre. Ezért a typeof b "number" lesz.

Szigorú módban ('use strict';), a nem deklarált változóhoz való hozzárendelés (b = 20;) ReferenceError-t okoz, és a globális változó nem jön létre. Így mindkét változó nem lesz elérhető a függvényen kívül, és a typeof a és typeof b "undefined" lesz (vagy hibát dob előtte).