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