-
Wie Sie sich vorstellen können, gibt es viele Möglichkeiten, anonyme Funktionen sofort auszuführen. Zusammenfassend gibt es drei typische Möglichkeiten (es gibt auch andere Möglichkeiten, teilen Sie uns dies bitte mit):
Methode eins
(Funktion() {
//…
})();
Methode 2
void function() {
//…
}();
Methode drei
~function() {
//…
}();
Möglicherweise haben Sie Methode 1 und Methode 2 gesehen. Hier erklären wir hauptsächlich Methode 3. Bevor wir die dritte Methode erklären, überprüfen wir nun die Definition des Operators „~“ (Bit-Negation) in EMCAScript (Seite 72 der fünften Auflage), eine einfache Übersetzung:
Konvertieren Sie den alten Wert in eine 32-Bit-Ganzzahl, indem Sie Anweisungen mit Operatoren kombinieren. Führen Sie die Anweisung nach dem Operator aus und konvertieren Sie die Zeile. Das Ergebnis ist eine 32-Bit-Ganzzahl und wird zurückgegeben.
Wie aus dem Obigen hervorgeht, können bitweise Operatoren tatsächlich sofort den Wert des folgenden Ausdrucks zurückgeben. Tatsächlich können andere bitweise Operatoren diesen Zweck erreichen, zum Beispiel:
!function() {
//…
}();
usw. können unser Ziel erreichen. Es gibt also eigentlich keinen anderen Grund für die Verwendung von „~“, der Code sieht nur „gut aus“ :^)
Effizienz ist nicht so sehr die Effizienz der Ausführung anonymer Funktionen auf drei Arten, sondern es ist besser, die Ausführungseffizienz jedes Operators direkt zu analysieren. Vergleichen wir also die Definitionen von „()“ und „void“ in der EMCA-Spezifikation und werfen wir einen Blick darauf
Gruppenbetreiber (fünfte Auflage, Seite 66)
Gibt das Ausführungsergebnis eines Ausdrucks zurück
nichtig (Seite 70, 5. Auflage)
Das Kombinieren von Anweisungen mit Operatoren gibt undefiniert zurück
Da der Gruppenoperator auch die Anweisung ausführen und den vom Anweisungsblock zurückgegebenen Wert zurückgeben muss, sind im Vergleich zu void mehrere Vorgänge erforderlich, um den Anweisungsblock abzurufen (obwohl dies nicht viel Leistung verbraucht), also in diesem Fall die Leistung von void ist besser als die des Gruppenoperators.
Beim Vergleich der beiden ist der Leistungsvergleich der dritten Methode offensichtlich geringer als der der ersten beiden. Zusammenfassend lässt sich sagen, dass unter den oben genannten drei anonymen Funktionsmethoden aus grammatikalischer Sicht Methode zwei besser als Methode eins und Methode drei die am wenigsten effiziente ist.
Fassen Sie die Vorteile der drei zusammen und denken Sie darüber nach
Methode 1 ist sehr verbreitet und sicher, daher wird Ihnen niemand die Verwendung dieser Methode vorwerfen. Allerdings kann es bei Schülern, die Methode 1 verwenden, häufig zu dem „Problem“ kommen, dass sie vergessen, Klammern zuzuordnen (insbesondere, wenn der Anweisungsblock sehr lang ist). oft falsch verstanden)
Die Verwendung bitweiser Operatoren zum Ausführen anonymer Funktionen liegt voll im Trend und sieht cool aus. Viele IDEs (z. B. IDEA) und Syntaxhervorhebungstools unterstützen die dritte Schreibweise nicht.
void ist am effizientesten, fühlt sich aber im Vergleich zu den anderen beiden Implementierungen immer sehr aufgeblasen an (nur ein paar Zeichen mehr?)
Also
In Anbetracht der Menge an Code und der Effizienz ist es richtig, in extremen Fällen, in denen zusätzlicher Code gespeichert werden muss, Methode drei zu verwenden, um der Effizienz Priorität einzuräumen. Dann möchte ich hier die Verwendung von Methode zwei erläutern Tatsächlich ist der Effizienzunterschied zwischen den drei Methoden sehr gering. Daher ist es nahezu unhaltbar, diese Methode ausschließlich aus Effizienzgründen anzuwenden.
Der konkrete Plan, der angenommen werden soll, muss auf der Grundlage der tatsächlichen Situation geprüft werden. Zum Beispiel verwende ich oft Methode drei, weil 1. sie praktisch ist (fügen Sie einfach ein Zeichen hinzu) 2. das Anpassen von Klammern bei langen Funktionen schwindelerregend ist 3. die Verwendung cool ist, aber Methode 3 lässt mich oft darauf achten, Code-Teammitglieder zu sein sind beunruhigt.
Wenn Sie über Framework-basierten Basiscode wie einige Klassenbibliotheken verfügen, ist die Verwendung von Methode 1 die sicherste und für jeden leicht verständliche Methode, also die sicherste Wahl.
[Originaltext: http://www.gracecode.com/archives/3004/ Sehr gut, jeder kann daraus lernen