Was ist der Sinn der Benennung von Funktionsausdrücken, wenn Sie nicht wirklich auf die Namen, die Sie ihnen geben, verweisen können?
%Vor%Oh, aber du kannst sie mit diesem Namen referenzieren. Diese Namen existieren nur innerhalb des Gültigkeitsbereichs der Funktion innerhalb .
%Vor%DOCS: Ссылка
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.
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.
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
Tags und Links javascript