Sobes.tech
Middle+

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