Er is een code met een zelf-uitvoerende functie (IIFE) met gebruik van var. Wat wordt er in de console weergegeven bij het aanroepen van typeof a en typeof b buiten de functie? Hoe verandert het gedrag in strikte modus?
sobes.tech AI
Antwoord van AI
Als binnen een IIFE variabelen worden gedeclareerd met var, bijvoorbeeld:
(function() {
var a = 10;
b = 20; // zonder var
})();
console.log(typeof a); // "undefined"
console.log(typeof b); // "number"
De variabele a gedeclareerd met var binnen de functie is lokaal en niet toegankelijk van buitenaf, dus typeof a zal "undefined" retourneren.
De variabele b gedeclareerd zonder var, let of const, in niet-strikte modus, leidt tot het creëren van een globale variabele. Daarom zal typeof b "number" retourneren.
In strikte modus ('use strict';) zal het proberen toe te wijzen aan een niet-gedeclareerde variabele (b = 20;) een ReferenceError veroorzaken, en de globale variabele wordt niet aangemaakt. Zo zullen beide variabelen buiten de functie niet toegankelijk zijn, en typeof a en typeof b zullen "undefined" retourneren (of er wordt eerder een fout gegenereerd).