Was ist der Sinn der Benennung von Funktionsausdrücken, wenn Sie nicht wirklich auf die Namen verweisen können, die Sie ihnen geben? [Duplikat]

7

Was ist der Sinn der Benennung von Funktionsausdrücken, wenn Sie nicht wirklich auf die Namen, die Sie ihnen geben, verweisen können?

%Vor%     
Michael R. 08.12.2015, 19:49
quelle

5 Antworten

10

Oh, aber du kannst sie mit diesem Namen referenzieren. Diese Namen existieren nur innerhalb des Gültigkeitsbereichs der Funktion innerhalb .

%Vor%

DOCS: Ссылка

    
Rocket Hazmat 08.12.2015, 19:54
quelle
9

Ein Vorteil, den ich besonders nützlich finde, ist, dass es beim Debuggen hilft.

Wenn ein Fehler auftritt, sehen Sie den Funktionsnamen im Stacktrace in der Konsole. Andernfalls würde die Zeile im Stacktrace nur auf eine anonyme Funktion verweisen.

Sie können den Zweck der Funktion auch klarer machen, indem Sie ihm einen Namen geben.

    
lex82 08.12.2015 19:54
quelle
4

Es ist wichtig, wenn Sie eine rekursive Funktion erstellen, die weitergegeben wird. Wenn Sie eine Funktion benennen, kennt sie sich selbst in ihrem eigenen Umfang.

Hier habe ich eine Art Factory-Funktion erstellt, die rekursive Funktionen erzeugt. Damit die rekursiven Funktionen ordnungsgemäß funktionieren, müssen sie über sich selbst wissen.

Sie können sich vorstellen, dass dies in einem weiteren Sinne angewendet wird, wie das Zurückgeben einer rekursiven Funktion als Modul-Export.

%Vor%
    
Oka 08.12.2015 20:03
quelle
1

Nach Ihrer Definition ist das, was Sie definiert haben, keine anonyme Funktion:

%Vor%

Name:

  

Der Funktionsname. In diesem Fall kann die Funktion weggelassen werden   wird als anonyme Funktion bekannt.

Darüber hinaus würde eine Menge Leute

betrachten %Vor%

darf keine anonyme Funktion sein, da Sie sie jetzt über den Variablennamen f() aufrufen können und die Funktion als Parameter an andere Funktionen übergeben können, indem Sie den Namen functionThatTakesCallback(f) eingeben.

In meinem Kopf hat eine echte anonyme Funktion überhaupt keinen Namen wie etwas, das an einen Rückruf weitergegeben wird:

%Vor%

oder als Funktion sofort ausführen:

%Vor%

Mit der Syntax, die Sie jetzt verwenden, in ES6 (die meisten Nicht-IE-Browser implementieren diese Funktion), ist f.name g . Dies ist beim Debuggen von

nützlich     
sunrize920 08.12.2015 20:10
quelle
1

Sie könnten es verwenden, um zu wiederholen:

%Vor%     
Mateusz Curyło 08.12.2015 20:10
quelle

Tags und Links