Undefined nach selbst ausführender Funktionen/self executing function (IIFE) –


phwert

Erfahrenes Mitglied
Hallo,

mir ist heute das erste Mal aufgefallen, dass folgender Ausdruck einen Fehler erzeugt:
Code:
(function(){ /* Code ... */ })();
Ergebnis:
undefined
Weitere Checks:
Code:
typeof function(){};
"function"

typeof function(){}();
"undefined"

typeof (function(){})();
"undefined"

typeof !function(){}();
"boolean"

!function(){}; 
false
Vermutlich gibt es keine Möglichkeit, Ausdrücke der Art "!function(){}();" oder "(function(){})();" ohne Rückmeldung (undefined, true, false ...) auszuführen, weil sie genau das ja sollen, richtig?

Gruß

PS: Das Ausformulieren hilft oft, das Problem wirklich zu erfassen, und so würde ich das Thema gerne löschen, was aber nicht geht. Tja, so ist das. :D
 
Zuletzt bearbeitet:

ComFreek

Mod | @comfreek
Moderator
Das ist kein Fehler, sondern einfach der Wert, zu dem die Expression evaluiert wurde. Jede Expression wird zu einem Wert evaluiert, so etwa "1+1" zu "2" und "Math.sin(0)" zu "0".
Die Expression "(function() {})()" wird eben zum Rückgabewert des Funktionsaufrufs evaluiert. Da es kein return-Statement gibt, ist der Rückgabewert auch immer "undefined".

Vergleiche das mit "(function() { return 42; })()". Das wird zu "42" evaluiert.

PS: Das Ausformulieren hilft oft, das Problem wirklich zu erfassen, und so würde ich das Thema gerne löschen, was aber nicht geht. Tja, so ist das. :D
Ich habe trotzdem mal kurz geantwortet, um sicher zu gehen, dass du die richtige Lösung nun weißt :)
 

Neue Beiträge