Die Klassenparty vor zwei Tagen, abgesehen von Essen, Trinken, Spaß und Unsinn, war es so freudig. Es war wirklich besser, nur Spaß zu haben, als Spaß zu haben.
PS: Wenn Sie einen Abschluss machen oder einen Abschluss machen, können Sie sich treffen, wenn Sie Zeit haben. Nach dem Abschluss haben Sie zu wenig Zeit, um zusammenzukommen.
Jetzt habe ich etwas Zeit, mir etwas anzusehen und etwas zusammenzufassen. Da ich mich vor einigen Minuten den JavaScript -Funktionsteil angesehen habe, nahm ich mir die Zeit, um die relevanten Teile der Funktion zusammenzufassen. Natürlich sind einige Teile darin mein eigenes Verständnis. Wenn es ein falsches Verständnis gibt, weisen Sie bitte darauf hin.
In diesem Abschnitt werde ich mit Ihnen über die Funktionserklärung im Voraus sprechen, basierend auf meinem eigenen Verständnis.
HINWEIS: An einigen Stellen wird es auch als Funktionserklärung als Aktion bezeichnet. Die Übersetzungen sind unterschiedlich, die Bedeutungen sind gleich, verstehen Sie sie einfach. Es ist Live -Verständnis!
Bevor Sie über die Erklärung der Funktionserklärung im Voraus plaudern, müssen verschiedene Methoden zur Funktionsdefinition eingeführt werden, mit denen die meisten Freunde vertraut sein sollten. Wenn Sie verstehen oder nicht verstehen möchten, rollen Sie glücklich herunter. Wenn Sie es nicht kennen oder sich damit vertraut machen möchten, verlangsamen Sie und beginnen Sie.
Methoden zur Definition von Funktionen
Es gibt drei Hauptmethoden, um Funktionen zu definieren:
1. Funktionserklärung
2. Funktionexpressionsfunktion Expression)
3. Neue Funktionskonstruktor
Unter ihnen werden häufig Funktionsdefinitionsmethoden für Funktionserklärungen und Funktionsausdrücke verwendet. Diese beiden Methoden haben sehr subtile Unterschiede und Verbindungen, und die Verwendung dieser beiden Methoden ist leicht zu verwechseln. Daher fasst dieser Artikel hauptsächlich die relevanten Wissenspunkte dieser beiden Funktionsdefinitionsmethoden zusammen. Natürlich geht es im Thema dieses Artikels noch um Funktionen im Voraus.
Typisches Format für Funktionserklärungen:
Funktionsfunktionsname (arg1, arg2, ...) {<!-Funktion Körper->}Funktionsausdrücke
• Typisches Format von Funktionsausdrücken:
var variable = function (arg1, arg2, ...) {<!-Funktion Körper->}Funktionsausdruck mit Namen (Klammern, Funktionsnamen):
var Varable = Funktion FunktionName (arg1, arg2, ...) {<!-Funktionsbody->}Funktionsausdrücke mit Namen wie oben können zur Rekursion verwendet werden:
var variable = Funktion FunktionName (x) {if (x <= 1) return 1; sonst return x*FunktionName (x);}Aussage vor dem Zeitplan
var Anweisung im Voraus
Freunde sollten im Voraus von der Erklärung gehört haben. Ich möchte es hier wiederholen, da die Aussage im Voraus ein wichtiger Unterschied zwischen einer Funktionserklärung und einem Funktionsausdruck ist und für uns von großer Bedeutung ist, diese beiden Funktionsdefinitionsmethoden weiter zu verstehen.
Bevor die Funktionserklärung jedoch im Voraus ist, muss man sagen, dass die VAR -Deklaration im Voraus ist.
Geben Sie zunächst die frühe Schlussfolgerung der VAR -Anweisung:
Variablen werden im Skript oder der Funktion definiert, die sie deklariert, und die Anweisung Variable Deklaration wird an die Spitze des Skripts oder der Funktion fortgeschritten. Die variable Initialisierungsoperation wird jedoch weiterhin in der ursprünglichen VAR -Anweisung ausgeführt, und der Wert der Variablen wird nicht definiert, bevor die Anweisung deklariert wird.
Aus der obigen Schlussfolgerung können drei einfache Punkte zusammengefasst werden:
1. Die variable Deklaration wird an die Oberseite der Funktion vorangetrieben.
2. Es ist nur so, dass die Erklärung fortgeschritten ist, die Initialisierung nicht fortgeschritten ist und die Initialisierung am ursprünglichen Initialisierungsort immer noch initialisiert wird.
3.. Der Wert der Variablen ist vor der Deklaration undefiniert.
Nehmen wir das Beispiel:
var gutausoome = 'hübsche'; Funktion firtometougly () {alert (hübsch); var hutome = 'hässlich'; alarm (gutaussehend);} filsometougly ();Die richtige Ausgabe ist:
Zuerst undefiniert ausgeben und dann hässlich ausgeben.
Die Fehlerausgabe lautet:
Zuerst gut ausgeben und dann hässlich ausgeben.
Genau das spielt die Variablenerklärung im Voraus. Die hübsche lokale Variable ist im gesamten Funktionskörper definiert. Die hübsche Variable im Funktionskörper wird unterdrückt. Oh nein, es deckt die gleichnamige hübsche globale Variable ab, da die Variablenerklärung fortgeschritten ist, dh der var gutaussehende auf die Oberseite der Funktion, die wie folgt ist:
var gutausoome = 'hübsch'; Funktion filsometougly () {var hübsch; wachsam (gutaussehend); var hutome = 'hässlich'; alarm (gutaussehend);} filsometougly ();Vor der Warnung (gutaussehend) gibt es bereits eine hübsche Erklärung, wie oben erwähnt
Der Wert der Variablen ist vor der Deklaration undefiniert
Die erste Ausgabe ist also undefiniert.
Und wegen der oben erwähnten:
Es ist nur so, dass die Erklärung fortgeschritten ist, die Initialisierung nicht fortgeschritten ist, die Initialisierung wird immer noch am ursprünglichen Initialisierungsort initialisiert.
Die zweite Ausgabe ist also hässlich.
Funktionserklärung im Voraus
In den nächsten beiden werden wir in Kombination mit der VAR -Deklaration über die Funktionserklärung über die Funktionserklärung im Voraus plaudern.
Freunde sollten mit der Erklärung der Funktionserklärung im Voraus vertraut sein. Geben Sie daher ein sehr vertrautes Beispiel.
SayTruth (); <!-Funktionserklärung-> Funktion Sayth () {alert ('myvin ist gutaussehend.');} sayTruth ();Freunde alle wissen, dass die Funktionsdefinitionsmethode der Funktionserklärung, dh die erste Funktion, die die oberste Funktion aufruft, korrekt ist, und die Wahrheit, dass Myvin gut aussehend ist. kann ausgegeben werden, da die Funktionsanweisung nach der Funktionserklärung platziert werden kann. Für die Funktionsdefinitionsmethode des Funktionsausdrucks, dh die Methode des obigen zweiten Funktionsaufrufs, kann das richtige Ergebnis von MyVin nicht ausgeben.
Kombiniert mit dem oben genannten Myvin ist gutaussehend. Beispielsweise scheint die Schlussfolgerung der Funktionserklärung im Voraus leicht zu verstehen. Ist es nicht nur so, dass bei Verwendung der Funktionsdefinitionsmethode der Funktionserklärung der Funktionsaufruf überall platziert werden kann. Ja, du hast recht, mein Freund, ich weiß nicht, wie ich dich widerlegen soll. Dann lassen Sie mich Ihnen noch ein paar Worte sagen.
Von dem, was mein Freund gesagt hat
Ist es nicht nur so, dass Funktionsaufrufe bei der Verwendung von Funktionsdefinitionsmethoden für Funktionserklärungen überall platziert werden können?
Es kann zu ein wenig führen:
Wenn die Funktionserklärung fortgeschritten ist, sind die Funktionserklärung und die Funktionskörper vorgebracht.
Und:
Funktionserklärungen werden während des Zeitraums vor der Aussage ausgeführt, dh Funktionserklärungen werden ausgeführt, wenn der Browser bereit ist, Code auszuführen. Da die Funktionserklärung während der erwarteten Ausführungsperiode ausgeführt wird, wird die Funktionserklärung während der Ausführungsfrist nicht mehr ausgeführt (es gibt Personen, die sie bereits ausgeführt haben, und sie werden natürlich nicht mehr ausgeführt).
Oben ist ein Punkt.
Warum kann der Ausdruck nicht im Voraus deklariert werden?
Sprechen wir über noch etwas: Warum können Ausdrücke nicht im Voraus wie Funktionserklärungen deklariert werden?
Glücklicherweise weiß ich ein wenig, sonst weiß ich wirklich nicht, wie ich antworten sollte?
Nach meinem Verständnis lassen Sie mich Ihnen erklären:
Wir haben über die VAR -Erklärung im Voraus gesagt, achten Sie auf das, was ich oben erwähnt habe:
Es ist nur so, dass die Erklärung fortgeschritten ist, die Initialisierung nicht fortgeschritten ist, die Initialisierung wird immer noch am ursprünglichen Initialisierungsort initialisiert.
OK, lassen Sie uns den Funktionsausdruck hier einstellen:
var variable = function (arg1, arg2, ...) {<!-Funktion Körper->}Funktionsausdrücke sind die Art und Weise, Funktiondefinitionen in Ausdrücke zu schreiben (es scheint eine Zeitverschwendung zu sein, aber dies ist wirksam bei der Interpretation und dem Verständnis, dass Funktionsausdrücke nicht im Voraus deklariert werden können), nämlich ein Funktionsobjekt einer Variablen zuzuweisen. Daher schreiben wir den Funktionsausdruck wie diesen:
var variable = 5 Sehen Sie dies. Vielleicht verstehen Freunde, dass einer einer Variablen einen Wert zuweisen soll, und das andere ist, einer Variablen ein Funktionsobjekt zuzuweisen. Für Funktionsausdrücke wird die variable Zuordnung daher nicht erweitert, dh Funktion (arg1, arg2, ...) {<!-Funktionsbody->} wird nicht erweitert, sodass die Funktionsdefinition nicht ausgeführt wird, sodass Funktionsausdrücke nicht vorab deklariert werden können wie Funktionserklärungen.
Analyse der frühen Instanz der Funktionserklärung
Der gleiche Satz, die Realität stammt aus dem Beispiel:
sayTruth (); if (1) {function sayTruth () {alert ('myvin is hübsch')};} else {function SayTruth () {alert ('myvin ist hässlich')};};};};};Wenn der Browser keinen Fehler wirft (bitte testen Sie sich, ob der entsprechende Browser einen Fehler geworfen hat. Warum teste ich ihn nicht? Kann ich sagen, ich bin faul?), Das Ausgabeergebnis des Browsers ist myvin hässlich (ich will es nicht zugeben, aber die Wahrheit ist, dass, Ahhhhh, sollte ich mehr lesen, wenn ich hässlich bin?
Warum? Natürlich wurde die Erklärung vorangetrieben. Da die Funktionserklärung fortgeschritten ist, wird die Funktionserklärung vor der Ausführung des Codes analysiert. Die Ausführungsreihenfolge lautet wie folgt: Erste Analysefunktion Sayth () {alert ('myvin is hübsch')}, und wenn Parsing -Funktion Sayth () {alert ('myvin ist hässlich')}, überschreibt die vorherige Funktionserklärung. Wenn wir die Funktion SayTruth () nennen, dh während der Codeausführung wird die Erklärung ignoriert, sodass Myvin hässlich ist, wird natürlich ausgegeben (was für eine grausame Realität ...). Wenn Sie vergessen, können Sie sehen, was Sie oben gesagt haben:
Funktionserklärungen werden während des Zeitraums vor der Aussage ausgeführt, dh Funktionserklärungen werden ausgeführt, wenn der Browser bereit ist, Code auszuführen. Da die Funktionserklärung während der erwarteten Ausführungsperiode ausgeführt wird, wird die Funktionserklärung während der Ausführungsfrist nicht mehr ausgeführt (es gibt Personen, die sie bereits ausgeführt haben, und sie werden natürlich nicht mehr ausgeführt).
Ein enger Anruf
Lassen Sie uns hier über Funktionen sprechen (Verbesserung). Ich hoffe, mein Verständnis und mein Unsinn können für die Bedürftigen hilfreich sein.
Natürlich erzeugt die Praxis wahres Wissen. Das Verständnis, die Erkenntnis und die Anwendung von Dingen liegen immer noch darin, mehr zu lesen, zu verwenden und zusammenzufassen. Ich erinnere mich an ein berühmtes Sprichwort, das über Aussagen und Praktiken spricht: "Lassen Sie uns neue Aussagen bewegen und anfeuern."
Die obige kurze Analyse der Funktionserklärung und Funktionsausdrücke - Die Funktionserklärung ist der gesamte Inhalt, den ich im Voraus mit Ihnen geteilt habe. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.