Erläuterung der JavaScript-Funktionssyntax

Erläuterung der JavaScript-Funktionssyntax

1. Gewöhnliche Funktionen

Die Erstellung von JS-Funktionen ist etwas ganz Besonderes. Es gibt viele Möglichkeiten, dies zu tun. Die einfachste ähnelt der der Sprache C.

Merkmale:

Funktionsnamen können neben Buchstaben, Zahlen und Unterstrichen auch das Zeichen "$" enthalten.

In js ist der Funktionsname eine Variable, die das Funktionsobjekt speichert. Verwenden Sie das Schlüsselwort typeof, um den Funktionstyp zu überprüfen. (Dieses Konzept ähnelt Python, wo andere Variablen verwendet werden können, um diese Funktion zu übernehmen.)

Beim Definieren von Funktionsparametern müssen keine Schlüsselwörter geschrieben werden: var, let, const. Lokal änderbare Variablen sollten die Standardeinstellung sein.

Eingabeparameter werden in der JS-Syntax nicht überprüft. Dies bedeutet, dass die Anzahl der Eingabeparameter gering oder hoch sein kann. Bei weniger Eingaben wird stattdessen „undefined“ verwendet, bei mehr Eingaben wird es automatisch ignoriert.

In ähnlicher Weise schränkt JS nicht ein, ob ein Rückgabewert vorhanden ist, und alle Rückgabewerte werden zurückgegeben. Wenn der Rückgabewert nicht angegeben ist, wird ein ungültiger Wert zurückgegeben.

// 1. Funktionsdefinition
Funktion printHello_1$_(name_0) 
{
    //Ausführung
    console.log("Hallo Welt!" + name_0);
}
console.log(Typ von printHello_1$_);
// 2. Funktionsaufruf
printHello_1$_(); 
// 3. Funktionsbenennung
// 4. Funktionsparameter
// 5. Funktionsrückgabe

js unterstützt auch anonyme Funktionen, was bedeutet, dass keine Funktionsnamen geschrieben werden. Es gibt etwas Ähnliches in Python, das auch in den Python-Lernnotizen beschrieben ist: anonyme Lambda-Funktion.

// 6. Die Funktion kann auch keinen Namen haben und direkt so erstellt werden.
lass ihn = function(){
    console.log("ihn");
}
him() // Dies zeigt, dass der Name tatsächlich ein Variablenname ist.
// 8. Der Funktionsname selbst unterstützt keine Werteübertragung, Variablen jedoch schon.
// him = printHello_1(); // Fehler (ähnlich der Tatsache, dass nach der Definition eines Arrays keine Werte zugewiesen werden können?)
lass add = ihn;
hinzufügen();
// 7. Dieser Variable können noch andere Inhalte zugewiesen werden.
er = 6;
console.log(him) // Gib die Zahl 6 aus

2. Pfeilfunktion

Die Pfeilfunktion in js ist eine „echte“ anonyme Funktion, die schnell verschachtelte Funktionskörper erstellen kann (mein eigenes Wort) … Sie entspricht auch eher der Verwendung der anonymen Lambda-Funktion von Python.

Als ich mir praktische Fälle ansah, drehten sich alle um die Erstellung und Parameterübergabe anonymer Funktionen. Als ich das erste Mal damit in Berührung kam, war das sehr verwirrend . Um die Wirkung des folgenden Codes leichter erkennbar zu machen, ändere ich die nicht verwendeten Teile auf „false“ und blockiere den Vorgang. Sie fragen sich, warum Sie es nicht einfach kommentieren? Weil ich den Gebrauch üben möchte.

Die Verwendung scheint einfach. Die Klammern davor sind die verwendeten Parameter und der Code folgt dem Pfeil. Bei einem einzeiligen, einfachen Code können Sie auf die Klammern verzichten und eine einzelne Zeile gibt auch implizit den berechneten Wert zurück.

wenn (falsch)
{
    const add = (a, b) => a + b; // Ähnlich wie das direkte Erstellen einer Funktion und deren Aufruf durch Zuweisung zu einer Variablen.
    console.log(add(1,3)); //Es wird kein Rückgabewert geschrieben und der berechnete Wert wird implizit zurückgegeben}
wenn (falsch)
{
    sei add = (a, b) => a + b;
    console.log(add(1,3)); // drucke 4
    const add_0 = add; // Sie können es durch eine normale Variablenzuweisung ersetzen add = 5; // Es ist ersichtlich, dass es sich im Wesentlichen immer noch um eine Variable handelt. Wenn die Definition einen Variablentyp verwendet, können Sie ihn ändern console.log(add); // Drucken Sie 5
    console.log(add_0(2, 4)); // gibt 6 aus
}
wenn (falsch)
{
    console.log(add_0(10, 4)); // const-Variablentypen können nicht den Gültigkeitsbereich überschreiten}

Wenn ein Zeilenumbruch erforderlich ist, sollten geschweifte Klammern verwendet werden. Häufig verwendet.

wenn (falsch)
{
    const add = (a, b) => 
    {
        gib a + b zurück;
    }
    console.log(add(1,3)); // Es gibt einen Rückgabewert, was bedeutet, dass die Verwendung von geschweiften Klammern zwar einen Zeilenumbruch anzeigen kann, aber keine implizite Rückgabe erfolgt. Eine einzelne Zeile verfügt immer über eine implizite Rückgabe.
}

3. Datenpaket JSON

JSON (JavaScript Object Notation, JS Object Notation) ist ein leichtes Datenaustauschformat. Es basiert auf einer Teilmenge von ECMAScript (js-Spezifikation, die von der European Computer Association entwickelt wurde) und verwendet ein von der Programmiersprache völlig unabhängiges Textformat zum Speichern und Darstellen von Daten. Die Einfachheit und klare hierarchische Struktur machen JSON zu einer idealen Datenaustauschsprache. Es ist für Menschen leicht zu lesen und zu schreiben und für Maschinen leicht zu analysieren und zu generieren und kann die Effizienz der Netzwerkübertragung effektiv verbessern. 【Stand Wikipedia】

  • Als ich zuvor neuronale Netzwerke und ROS studierte, kam ich auch mit dieser Art von Datenpaket in Berührung, einer kleinen .json-Datei, die eine Reihe von Parametern oder Datensätzen enthielt. Vom Format her ist es einem Wörterbuch sehr ähnlich, mit Schlüsseln und Werten in Paaren. Wenn Sie es grafisch erweitern, ist es tatsächlich eine Liste mit einer Überschrift und Daten.
  • js stellt die Object-Klasse zum Erstellen von JSON-Objekten bereit. (Eigentlich geht es darum, Objekte zu erstellen. Darauf wird im nächsten Abschnitt ausführlich eingegangen.)
// Beispiel 1
wenn (falsch)
{
    const book = neues Objekt({title : "1984", author : "George Orwell"}) // JSON-Objekt erstellen console.log("\n ---------")
    console.log(typeof book) // Überprüfe den Typ, es ist tatsächlich ein Objekt console.log(book) // Kann normal drucken}
// Beispiel 2 (Detaillierte Erklärung im nächsten Abschnitt, Wissenspunkte zu Objekten)
wenn (falsch)
{
    const book = ({title : "1984", author : "George Orwell"}) // Auch ohne das Hinzufügen des Schlüsselworts Object kann derselbe Effekt erzielt werden.
    konsole.log("\n ---------")
    console.log(Buchtyp)
    console.log(Buch)
}
// Beispiel 3
wenn (falsch)
{
    const Buch = [
        {Titel: "1984", Autor: "George Orwella"},
        {Titel: "1985", Autor: "George Orwellb"},
        {Titel: "1986", Autor: "George Orwellc"},
        {Titel: "1987", Autor: "George Orwell"}
    ]
    konsole.log("\n ---------")
    console.log(Buchtyp) // Der Drucktyp ist immer noch ein Objekt, aber eigentlich ist es ein Array console.log(Buch)
}
  • js bietet eine Methode zum Konvertieren von JSON-Objektdaten in eine Zeichenfolge: JSON.stringify()。
wenn (falsch)
{
    const book = ({title : "1984", author : "George Orwell"}) // Auch ohne das Schlüsselwort Object hinzuzufügen, kann derselbe Effekt erzielt werden.
    konsole.log("\n ---------")
    let bookJSON = JSON.stringify(book); // Objekt im Originalformat behalten und in einen String umwandeln, wobei der Schlüsselname zu einem String wird (d. h., es werden doppelte Anführungszeichen hinzugefügt)? Praktisch zum Speichern im Text?
    console.log(typeof bookJSON) // Wenn ich es mir recht überlege, ist JSON nicht auch die Parameterdatei, die ich verwendet habe, als ich zuvor das ROS-Projekt geschrieben habe? Die Textdateien von Baidu Feijiang liegen ebenfalls in diesem Format vor.
    console.log(buchJSON)
}
/* Die Ausgabe sieht wie folgt aus:
 ---------
Schnur
{"Titel":"1984","Autor":"George Orwell"}
*/
// Sie können feststellen, dass der Schlüsselwert immer noch die ursprüngliche Zeichenfolge ist, der Schlüsselname jedoch in eine Zeichenfolge geändert wurde

Ich habe ein Analogieexperiment durchgeführt, siehe folgende Kommentare.

wenn (falsch)
{
    const Buch = ([1,23,3,"156"]) 
    konsole.log("\n ---------")
    console.log(typeof book) // Der Typ ist immer noch ein Objekt
    let bookJSON = JSON.stringify(book); // Kann weiterhin ohne Fehler aufgerufen werden.
    console.log(typeof bookJSON) // Das Ergebnis ist eine Zeichenfolge, die genau mit dem ursprünglichen Ergebnis übereinstimmt.
    console.log(buchJSON)
}
/* Die Ausgabe sieht wie folgt aus:
 ---------
Objekt
Schnur
[1,23,3,"156"]
*/
// Es kann festgestellt werden, dass die Funktion anscheinend nicht funktioniert. Es funktioniert nicht und es wird kein Fehler gemeldet, wenn das Format nicht den JSON-Anforderungen entspricht.

js bietet eine Methode zum Konvertieren von String-Daten in ein JSON-Objekt: JSON.parse()。 Es handelt sich um die inverse Operation von JSON.stringify() .

wenn (falsch)
{
    lass data_0 = "[1,2,3]";
    let data = "{\"title\" : \"1984\", \"author\" : \"George Orwell\"}"; // Beachten Sie, dass im JSON-String-Format sowohl Schlüssel als auch Werte in doppelte Anführungszeichen eingeschlossen werden müssen, um ein stringähnliches Format zu erstellen. Wenn irgendetwas nicht stimmt, schlägt die Konvertierung fehl.
    let parsed = JSON.parse(data); // Umgekehrte Operation, konvertiere den String zurück in den Objekttyp. Analysiert, ob es dem Format entspricht.
    console.log("\n -----")
    console.log(analysiert); // 
    console.log(analysierter Typ) 
    console.log(Datentyp) 
}
/* Die Ausgabe sieht wie folgt aus:
 -----
{ Titel: '1984', Autor: 'George Orwell' }
Objekt
Schnur
*/
// Beachten Sie, dass der Schrägstrich in der Zeichenfolge problematischer ist
  • Es ist sehr wichtig zu lernen, wie man Daten im JSON-Format verwendet. Die JSON-Variable sind keine gewöhnlichen Daten, sondern ein Objekt, das viele Datenverarbeitungsfunktionen enthält. Beispielsweise werden die oben genannten Funktionen zum Konvertieren zwischen den beiden Zeichenfolgen und Daten im tatsächlichen Kampf verwendet. Es gibt zwei Vorgänge: Daten lesen und Daten speichern.

4. Gegenstand

Die Objekterstellung in JS unterscheidet sich von der Klassenerstellung in Python, aber es werden Objekte direkt erstellt. Ich werde mir die Beispiele direkt ansehen und näher darauf eingehen.

wenn (falsch)
{
    lass data_0 = "[1,2,3]";
    let data = "{\"title\" : \"1984\", \"author\" : \"George Orwell\"}"; // Beachten Sie, dass im JSON-String-Format sowohl Schlüssel als auch Werte in doppelte Anführungszeichen eingeschlossen werden müssen, um ein stringähnliches Format zu erstellen. Wenn irgendetwas nicht stimmt, schlägt die Konvertierung fehl.
    let parsed = JSON.parse(data); // Umgekehrte Operation, konvertiere den String zurück in den Objekttyp. Analysiert, ob es dem Format entspricht.
    console.log("\n -----")
    console.log(analysiert); // 
    console.log(analysierter Typ) 
    console.log(Datentyp) 
}
/* Die Ausgabe sieht wie folgt aus:
 -----
{ Titel: '1984', Autor: 'George Orwell' }
Objekt
Schnur
*/
// Beachten Sie, dass der Schrägstrich in der Zeichenfolge problematischer ist

Am Format lässt sich erkennen, dass es sich wie eine Reihe von Attributen anfühlt, einschließlich Zeichenfolgen und anonymen Funktionen. Und statt eines Gleichheitszeichens verwenden wir zum Zuweisen von Werten einen Doppelpunkt, genau wie bei einem Wörterbuchschlüsselpaar.

Jetzt scheint es also, dass das JSON-Datenpaket der Existenz eines Objekts in JS entspricht. Wenn Sie die Funktionsmethode direkt ausdrucken, erhalten Sie etwa Folgendes: [Funktion (anonym)].

Neben der direkten Wertezuweisung zu Beginn besteht auch die Möglichkeit, zunächst ein leeres Objekt anzulegen und dann nach und nach Werte hinzuzufügen. Wenn die Eigenschaft bereits vorhanden ist, wird sie überschrieben, andernfalls wird sie als Ergänzung behandelt. (sehr einfach und grob)

// 2. Eine andere Möglichkeit, ein Objekt zu erstellen, mit einem Konstruktor if (false)
{
    const Buch = neues Objekt();
    console.log(book); // Die anfängliche Erstellung ist leer console.log(typeof book); // Der Typ ist ein Objekt
    Buchtitel = "1984";
    Buch.Autor = "George Orwell";
    book.isAvailable = false; // Attribut hinzufügen book.checkIn = function(){
        this.isAvailable = true; // Methode hinzufügen };
    buch.checkOut = function(){
        dies.istVerfügbar = falsch; 
    };
     console.log(Buch); // Normal drucken console.log(Typ des Buches);
    // 3. Methoden für den Zugriff auf Elemente innerhalb eines Objekts:
    console.log(book.title); // Zugriff ähnlich einer Struktur console.log(book["title"]); // Zugriff ähnlich einem Wörterbuch, das Ausgabeergebnis ist dasselbe. Beachten Sie, dass bei diesem Zugriff der Schlüsselname in doppelte Anführungszeichen gesetzt und als Zeichenfolge behandelt werden muss console.log(book.checkIn); // Wenn es sich um eine Zugriffsfunktion handelt und keine Klammern hinzugefügt werden, wird ein Objekt zurückgegeben. Ähnliche Zeichen drucken: [Funktion (anonym)]
    console.log(book.checkIn()); // Wenn Sie Klammern hinzufügen, entspricht dies dem Aufruf der Ausführung. (Der Rückgabewert ist leer, da die Funktion keinen Rückgabewert enthält.)
    console.log(book["checkIn"]); // Sie können auch in Wörterbuchform darauf zugreifen, mit demselben Ergebnis console.log(book["checkIn"]()); // Diese Klammer steht außerhalb der eckigen Klammern.
}
  • Kontextmechanismus: Bezieht sich hier nicht der Name des Objekts im Objekt, sondern die im Kontext verwendete Variable? (Weitere Einzelheiten finden Sie im Video. Ich verstehe es nicht so gut.)
  • Ähnlich wie das von mir verwendete Subjekt ist das von mir verwendete Subjekt ein Objekt, was zurückgegeben wird, ist ein Objekt und die von mir verwendete Funktion gibt eine Funktion zurück. Dies kann also auch in einer Funktion verwendet werden, obwohl die Funktion selbst auch ein Objekt ist (?).
wenn (falsch)
{
    const bookObj = { // Erstelle ein Objekt checkIn : function(){ // Füge ein Attribut hinzu return this; // Dieses Attribut ist eine Methode und hat einen Rückgabewert, der das Objekt selbst zurückgibt}
    }
    function anotherCheckIn(){ // Eine Funktion erstellen return this; // Eine Funktion selbst zurückgeben}
    console.log(bookObj.checkIn() == bookObj); // Der Rückgabewert ist das Objekt selbst, richtig console.log(bookObj.checkIn() == globalThis); // Der Rückgabewert ist eine Funktion, falsch console.log(anotherCheckIn() == globalThis); // Der Rückgabewert ist eine Funktion, richtig }

5. Versprechen

Ein verwirrender Abschnitt, der über den asynchronen Betriebsmechanismus in js spricht? Ich werde nicht zu viel erklären, aus Angst, dass mir umso mehr Fehler unterlaufen, je mehr ich rede.

// Das Promise-Objekt wird verwendet, um den endgültigen Abschluss (oder Fehler) einer asynchronen Operation und ihren Ergebniswert darzustellen.
wenn (wahr)
{
    function promiseTimeout(ms){ // Eine Funktion erstellen return new Promise((resolve, reject) => { // Ein Promise-Objekt zurückgeben, der Eingabeparameter ist eine anonyme Funktion, wobei die anonyme Funktion 2 Parameter hat, einer ist der Inhalt, der bei Erfolg ausgeführt werden soll, und der andere ist der Inhalt, der bei einem Fehler ausgeführt werden soll setTimeout(resolve, ms); // interne js-Funktion, den zweiten Parameter um ms verzögern, bevor der Inhalt des ersten Parameters ausgeführt wird
        });
    }
    promiseTimeout(2000) //Rufen Sie die Funktion auf und übergeben Sie den Parameter 2000ms;
        .then(() => { // Integrierte Methode des zurückgegebenen Promise-Objekts; wird bei Erfolg aufgerufen. Diese integrierte Methode hat auch einen Parameter, nämlich eine anonyme Funktion console.log('Done!!'); // Diese anonyme Funktion hat keine Parameter und ihre interne Funktion druckt nur return promiseTimeout(1000); // Rufe die Funktion erneut auf und gib eine andere Variable zurück }).then(() => { // Da das Obige eine andere Variable zurückgibt, kann es in einer Kette aufgerufen werden.
            console.log('Auch erledigt!!'); // 1000 ms verzögern und dann nach erfolgreichem Vorgang „return“ aufrufen Promise.resolve(42); // Ein anderes Objekt zurückgeben, unendlich viele Matrjoschkas }).then((result_0) => { // Parameter übergeben, der Name dieses Parameters ist beliebig, ich kann den Effekt auch nach der Änderung noch erzielen. Die IDE markiert ihn automatisch rot, daher sollten Sie wissen, dass es sich um eine Variable und nicht um ein grammatikalisches Schlüsselwort handelt console.log(result_0); // Parameter drucken })
        .catch(() => { // Wie oben, ruft aber console.log('Error!') auf, wenn es fehlschlägt;
        })
    // Da die Methoden Promise.prototype.then und Promise.prototype.catch Promises zurückgeben, können sie verkettet werden.
}
/*
Die laufenden Ergebnisse sind:
Warten Sie einen Moment und drucken Sie eine Zeile:
Erledigt!
Nach einer kurzen Wartezeit werden zwei Zeilen gleichzeitig gedruckt:
Auch erledigt!
42
*/

6. Async: Warten

Das Gegenteil des Promise-Mechanismus.

// Async:Warten
Funktion promiseTimeout(ms){
    returniere neues Promise((lösen, ablehnen) => {
        setTimeout(Auflösung, ms);
    });
}
asynchrone Funktion longRunningOperation(){
    Rückgabe 42;
}
asynchrone Funktion run() {
    console.log('Start!');
    await promiseTimeout(2000); // Fügen Sie das Schlüsselwort „await“ hinzu, das Ergebnis ähnelt dem synchronen Vorgang. Ursprünglich führte die Verwendung von Promise zuerst zum Drucken und dann zu einer Verzögerung. Wenn A/A hinzugefügt wird, erfolgt zuerst eine Verzögerung und dann der Druck in der richtigen Reihenfolge.
    const Antwort = warte auf longRunningOperation();
    console.log(response); // Logischerweise sollte es 42 zurückgeben und direkt drucken. Tatsächlich wird, wenn das Schlüsselwort await nicht hinzugefügt wird, sofort ein Promise-Objekt statt 42 zurückgegeben.
    console.log('Stopp!!');
}
laufen();
/*
Die laufenden Ergebnisse sind:
Drucken Sie zuerst eine Zeile:
Start!
Nach einer kurzen Wartezeit werden zwei Zeilen gleichzeitig gedruckt:
42
Stoppen!
*/

7. Paket

Mit dem in node.js enthaltenen NVM-Tool können Sie JS-Softwarepakete gut verwalten. Und das Projekt kann mit einem Verzeichnis zugehöriger Softwarepakete ausgestattet werden. Sie müssen nur das entsprechende Softwarepaket hinzufügen und dann den Befehl „Projekt aktualisieren“ eingeben, um das Softwarepaket zum Projekt hinzuzufügen.

Ähnlich wie beim Kompilieren, allerdings handelt es sich hierbei um einen Download. In der Vergangenheit befürwortete Python die Installation des Softwarepakets direkt im Arbeitsbereich des Computers. Es wird empfohlen, die C-Sprachbibliotheken in das Projekt einzubinden. js wird im Projekt ebenfalls empfohlen. Wenn Sie das Programm jedoch übertragen möchten, wird der Softwarepaketordner gelöscht. Übertragen Sie nur den Projektcode-Teil. Nach Abschluss der Übertragung können Sie die Update-Download-Funktion auf einem anderen Computer nutzen. Dieser Vorgang ähnelt ein wenig dem ROS-Projekt, das ich zuvor gelernt habe. Das ROS-Projekt kann jedoch auch dann normal ausgeführt werden, wenn es nicht richtig eingerichtet ist. Wenn das JS nicht richtig eingerichtet ist, wird es die Kompilierung nicht bestehen.

Zusammenfassen

Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalten auf 123WORDPRESS.COM mehr Aufmerksamkeit schenken können!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung dieser Zeigerfunktion in JS
  • Detaillierte Erklärung zur Verwendung der Vue.js-Renderfunktion
  • JavaScript-Grundlagenreihe: Funktionen und Methoden
  • Fallstudie zu JavaScript-Funktionsaufrufen, Apply- und Bind-Methoden
  • Beispiel für die JavaScript-Funktion „CollectGarbage“
  • Detaillierte Erläuterung der Einführung in die JavaScript-Funktion

<<:  Beispielerklärung von MySQL-Fremdschlüsseleinschränkungen

>>:  Detaillierte Erklärung des Nginx Reverse-Proxy-Beispiels

Artikel empfehlen

JavaScript-Implementierung des Verifizierungscode-Falls

In diesem Artikel wird der spezifische Code für J...

Allgemeine JavaScript-Anweisungen: Schleife, Beurteilung, Zeichenfolge in Zahl

Inhaltsverzeichnis 1. Schalter 2. While-Schleife ...

Reiner CSS-Code zum Erzielen eines Drag-Effekts

Inhaltsverzeichnis 1. Beispiel für Drag-Effekt 2....

Gründe, warum MySQL Kill Threads nicht beenden kann

Inhaltsverzeichnis Hintergrund Problembeschreibun...

Implementierung der Formatierung von Partitionen und der Einbindung in Centos7

Unter Linux treten häufig Situationen auf, in den...

Vue implementiert scrollbaren Popup-Fenstereffekt

In diesem Artikel wird der spezifische Code von V...

Optimierte Implementierung von count() für große MySQL-Tabellen

Das Folgende ist mein Urteil basierend auf der Da...

CocosCreator - modulares Lernskript

Modulares Cocos Creator-Skript Mit Cocos Creator ...

Vue3 AST Parser-Quellcode-Analyse

Inhaltsverzeichnis 1. Generieren Sie einen abstra...