Sobes.tech
Middle+

Was wird in der Konsole ausgegeben, wenn typeof a und typeof b außerhalb einer selbstaufrufenden Funktion (IIFE) mit var aufgerufen werden? Wie ändert sich das Verhalten im Strict-Modus?

sobes.tech KI

Antwort von AI

Wenn innerhalb einer IIFE Variablen mit var deklariert werden, zum Beispiel:

(function() {
  var a = 10;
  b = 20; // ohne var
})();

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

Wird die Variable a mit var innerhalb der Funktion deklariert, ist sie lokal und außerhalb nicht zugänglich, daher gibt typeof a "undefined" zurück.

Die Variable b, die ohne var, let oder const deklariert wird, führt im nicht-strengen Modus dazu, dass eine globale Variable erstellt wird. Daher gibt typeof b "number" zurück.

Im strengen Modus ('use strict';) führt der Versuch, einer nicht deklarierten Variablen einen Wert zuzuweisen (b = 20;), zu einem ReferenceError, und die globale Variable wird nicht erstellt. Somit sind beide Variablen außerhalb der Funktion nicht zugänglich, und typeof a sowie typeof b geben "undefined" zurück (oder es wird vorher ein Fehler ausgelöst).