dedlfix: Funktionsnamen im Programm ausgeben

Beitrag lesen

Tach!

func=function foo() {
   console.log( foo.name );
   return 1;
}
console.log( func.name + ' returns ' + func() );

Ist dann "func" eine private variable von "function foo() oder benötige ich eine globale variable pro function ??

Weder noch. Es wurde eine Funktion erstellt. Die Angabe des Namens foo hat bei dieser Syntax keine Wirkung, insofern als dass man sie nicht darüber aufrufen kann. In func wurde eine Referenz auf diese Funktion erstellt. func ist in dem Fall eine globale Variable, also eine Eigenschaft des window-Objekts, da kein var/let/const davorgestellt wurde. Ansonsten ist es eine ganz normale Variable.

Man braucht auch nicht für jede Funktionsreferenz eine Variable. Man kann die Referenz auch anderweitig nutzen. Beispielsweise gleich nach dem Erzeugen aufrufen:

(function () {console.log('foo');})()

Das wäre dann eine IIFE - immediately-invoked function expression.

dedlfix.