Heim >Web-Frontend >js-Tutorial >NodeJs grundlegende Syntax undtypes_node.js
steht vor
Heute möchte ich das Wissen über den Knotentyp überprüfen. Ich habe einen Artikel auf Googol gesehen, aber der ursprüngliche Link ist nicht mehr im Snapshot Wenn Sie Fragen haben, kontaktieren Sie mich bitte!
In diesem Artikel geht es um die Grundlagen von JS, Experten werden ihn automatisch überspringen! Ich habe noch nicht viel über js geschrieben und bin in diesem Bereich relativ schwach, daher bin ich beim Schreiben von Knoten auch auf Probleme gestoßen. Ich werde hier etwas Wissen hinzufügen!
Text
Node.js basiert auf der Skriptsprache JavaScript. Ein gemeinsames Merkmal der meisten Skriptsprachen ist die „schwache Typisierung“.
Anders als PHP muss PHP keine neue Variable deklarieren, selbst wenn es eine neue Variable hat, während JavaScript immer noch var benötigt, um sie zu deklarieren. Und diese Variable deckt die Bedeutung aller Typen wie int, string, char usw. in C ab, sogar Funktionen.
Der gesamte Inhalt dieses und der folgenden Artikel wird mit vim unter Linux oder Cygwin bearbeitet (falls nicht, konvertieren Sie ihn bitte in Ihre eigene Methode) und sehen Sie sich die Ergebnisse dann in der Befehlszeile an.
Grundlegende Grammatik
Variablendeklaration
In C/C deklarieren wir Variablen wie folgt:
```C
Und in Node.js sieht es so aus:
„Javascript
Egal, um welche Art von Variable es sich handelt, sie wird mit einer Variablen in Node.js gelöst.
Schleifenanweisung
für…ich
Diese Schleifenanweisung ist im Grunde die gleiche wie C/C, beide sind
```C
Da Node.js schwach typisiert ist, benötigen Sie nur:
„Javascript
Dies ist eine posttypisierte Schleifenanweisung, ähnlich der foreach von PHP.
Zum Beispiel haben wir ein JSON-Objekt wie folgt:
Javascript
Zu diesem Zeitpunkt können wir for...in verwenden, um Folgendes zu durchlaufen:
Javascript
Wenn wir den folgenden Befehl in der Befehlszeile eingeben:
Der folgende Inhalt wird auf dem Bildschirm angezeigt:
Tipps: Wie Sie oben sehen können, wird die for...in-Anweisung zum Durchlaufen der Schlüsselnamen von JSON-Objekten, Arrays und Objekten verwendet, bietet jedoch keine Durchquerung von Schlüsselwerten. Wenn Sie den Schlüsselwert erhalten möchten, können Sie ihn nur in der Form foo[ while...do, do...whill Ich werde das nicht viel erklären. Es unterscheidet sich nicht wesentlich von anderen Sprachen. Wenn es eine Variablendeklaration gibt, müssen Sie lediglich var verwenden. Betreiber , -, *, / Das ist es, worauf Sie bei diesen Betreibern achten müssen. Es kann sowohl mit Zeichenfolgen als auch mit numerischen Operationen arbeiten. Obwohl schwach typisierte Sprachen angeben, dass der Typ schwach ist, können Zahlen manchmal in Form von Zeichenfolgen und Zeichenfolgen manchmal in Form von numerischen Werten angezeigt werden. Bei Bedarf müssen wir jedoch immer noch angeben, um welchen Typ es sich handelt. Wir können den folgenden Code verwenden, um das Ergebnis zu sehen: ParseInt ist hier eine integrierte Funktion von Node.js, die zum Parsen eines Strings in eine Variable vom Typ int verwendet wird. Das Ausführungsergebnis des obigen Codes ist: Hinweis: Das erste console.log-Ergebnis ist 12. Da a eine Zeichenfolge ist, wird b auch vom System als Zeichenfolge hinzugefügt. Das Ergebnis ist, dass die beiden Zeichenfolgen zusammengeklebt werden und 12 werden. Das zweite console.log-Ergebnis ist 3, da wir das erste a in den Typ int konvertiert haben. Die Addition von zwei Variablen vom Typ int ist natürlich 3. ==, ===, !=, !== Eine Sache, die hier erklärt werden muss, ist, dass bei einer Länge dieses logischen Operators von 2 (==, !=) nur bestimmt wird, ob die externen Werte gleich sind, nicht jedoch der Typ. Wie zum Beispiel Das ausgegebene Ergebnis ist wahr. Wenn wir jedoch in der Mitte des Urteils ein Gleichheitszeichen hinzufügen, ist es ein strenges Urteil. Nur wenn Typ und Wert gleich sind, ist es wahr, andernfalls ist es falsch. Das heißt , das zurückgegebene Ergebnis ist falsch, da a vom Typ int und b eine Zeichenfolge ist. Lassen Sie uns übrigens über bedingte Anweisungen sprechen. Hier handelt es sich tatsächlich nicht um mehrere logische Operatoren, zwei Gleichheitszeichen und drei Gleichheitszeichen. Deshalb werde ich nicht zu sehr ins Detail gehen. Typ Hier werde ich es als Operator und nicht als Funktion behandeln. Die Funktion dieses Operators besteht darin, den Typ einer Variablen zu bestimmen, d. h. den Typnamen. Sie können ihn ermitteln, indem Sie den folgenden Code ausführen: Das Ausführungsergebnis hier wird sein: null, undefiniert, NaN In JavaScript gibt es drei Sonderwerte, wie im Titel gezeigt. Das erste ist vielleicht jedem bekannt, aber es wird in Großbuchstaben geschrieben
Jeder kann es verstehen, deshalb werde ich es nicht zu viel erklären. Aber im Gegensatz zu C/C ist diese Null nicht gleich 0.
Variablentyp
Zeichenfolge
var foo = [ 1, 2, 3 ];
[ 3, 2, 3 ]
JSON-Objekt
Es gibt zwei Möglichkeiten, den Schlüsselwert eines bestimmten Schlüsselnamens im JSON-Objekt abzurufen. Die erste besteht darin, eine Punktverbindung zu verwenden, und die zweite darin, eckige Klammern zu verwenden: Javascript Hinweis: Wenn Sie den Punkt oben verwenden, folgt direkt darauf der Schlüssel in JSON. Wenn Sie den Schlüssel als Variable behandeln, können Sie es nur mit dog[key] versuchen: Jetzt können Sie es selbst versuchen, verwenden Sie The for ...in Form durchläuft das obige JSON-Objekt. Vergessen Sie nicht, typeof meow~ Grundlagen von Klassen (Objekten) Genau genommen kann eine Node.js-Klasse nicht als Klasse betrachtet werden. Tatsächlich handelt es sich lediglich um eine Sammlung von Funktionen mit einigen Mitgliedsvariablen. Sein Wesen ist eigentlich eine Funktion. Aber der Einfachheit halber werden wir es im Folgenden und in Zukunft als „Klasse“ und die Instanziierung als „Objekt“ bezeichnen. Da eine Klasse viele Funktionsmerkmale aufweist oder ihr Wesen eine Funktion ist, erklären wir hier möglicherweise versehentlich die Grundlagen von Funktionen. Deklaration und Instanziierung von Klassen Eine Klasse zu deklarieren ist sehr einfach, lachen Sie nicht: Javascript Echt oder falsch? ! real. Glauben Sie es nicht? Wenn Sie es nicht glauben, können Sie einen Code eingeben und einen Blick darauf werfen: Javascript Und dieses sogenannte foo() ist eigentlich der Konstruktor der foo()-Klasse. Mitgliedsvariablen Es gibt zwei Möglichkeiten, Mitgliedsvariablen zu verwenden. Die erste besteht darin, dies. Hinweis: Nur wenn dies hinzugefügt wird, handelt es sich um eine Mitgliedsvariable der aufrufenden Klasse, andernfalls handelt es sich nur um eine lokale Variable innerhalb der Funktion. Es ist notwendig, den Gültigkeitsbereich der Variablen zu unterscheiden, wenn dieser nicht vorhanden ist. Die zweite Methode besteht darin, es außerhalb des Konstruktors oder einer beliebigen Mitgliedsfunktion zu deklarieren. Das Format ist Javascript Egal welche Methode oben eine Deklaration von Mitgliedsvariablen ist, wir können den Effekt sehen: Javascript Sie können diese Klasse sogar wie folgt ändern: Javascript Verwenden Sie dann den obigen Code zur Ausgabe. Denken Sie darüber nach, warum die Ausgabe immer noch Welt statt Eiertropfensuppe ist. Konstrukteur Wir haben bereits gesagt, dass foo() eigentlich ein Konstruktor ist. Wir können also natürlich Parameter an den Konstruktor übergeben, sodass wir den folgenden Code haben: Javascript Wir sehen oben ein seltsames Urteil if(hello === undefiniert). Wozu dient dieses Urteil? Die erste Möglichkeit besteht darin, dass der Entwickler sich alle Mühe gegeben hat, undefiniert zu übergeben. Zum jetzigen Zeitpunkt ist es verständlich, dass es undefiniert ist. Es gibt eine andere Situation. Wir haben zu Beginn gesagt, dass JavaScript eine schwach typisierte Sprache ist. Tatsächlich ist es nicht nur schwach typisiert, sondern auch die Parameterübergabe ist sehr locker. Sie können mehr oder weniger bestehen (solange Sie sicherstellen können, dass das Programm keine Fehler macht oder die Logik keine Fehler macht, wenn Sie mehr oder weniger bestehen), im Prinzip ist das in Ordnung. Parameter, die in „more“ übergeben werden, werden automatisch ignoriert, während Parameter, die in „less“ übergeben werden, durch „undefiniert“ ergänzt werden. Sehen Sie sich zum Verständnis den folgenden Code an: Javascript Bitte geben Sie die Hallo-Variablen der beiden Riegel selbst aus, und Sie werden feststellen, dass einer die Welt und der andere die Eiertropfensuppe ist. Wenn unser erster bar1 deklariert wird, sieht Node.js ihn offensichtlich automatisch als: Javascript Es gibt also ein Sprichwort, dass es die Welt ist. Außerdem sehen wir in diesem Konstruktor, dass der übergebene Parameter „Hallo“ ist und dass es in dieser Klasse eine Mitgliedsvariable namens „this.hello“ gibt. Wir haben jedoch zuvor gesagt, dass der Gültigkeitsbereich unterschiedlich ist, wenn dies vorhanden ist und wenn dies nicht der Fall ist. Der Parameter wirkt nur im Konstruktor, und derjenige mit this ist eine Mitgliedsvariable. Dadurch werden sie sofort unterschieden, sodass es keine Rolle spielt, auch wenn sie denselben Namen haben. Mitgliederfunktionen Member-Funktionsdeklaration Die Deklaration von Mitgliedsfunktionen ähnelt der zweiten Deklarationsmethode von Mitgliedsvariablen, nämlich Javascript Der obige Code ist offensichtlich. Wir haben die setHello-Funktion der foo-Klasse implementiert, die den Wert von foo.hello ändern kann. Aber ist es nicht ein bisschen mühsam, so zu schreiben? Als nächstes werde ich über ein wichtiges Merkmal von JavaScript-Funktionen sprechen. ★ Anonyme Funktion ★ Oft werden einige unserer Funktionen nur an einer Stelle referenziert oder aufgerufen, sodass es für uns weder sinnvoll noch unnötig ist, dieser Funktion einen Namen zu geben, sodass wir diese Funktion vorübergehend schreiben und die Person, die darauf verweist, direkt zulassen können Die Leute zitieren es, die Leute, die es nennen, nennen es. Daher kann der Funktionsname weggelassen werden, z. B.: Javascript Wie kann ich ein Angebot erstellen oder anrufen? Wenn auf die obige Klasse verwiesen werden muss, würde sie wie folgt geschrieben werden: Javascript Diese Schreibweise hat den gleichen Effekt wie die Deklaration einer Mitgliedsfunktion und spart viel Code. Und tatsächlich wird die Deklaration von Klassenmitgliedsfunktionen im Grunde auf diese Art und Weise einer anonymen Funktion deklariert. Wie kann die anonyme Funktion aufgerufen werden? Dies wird normalerweise verwendet, wenn eine Funktion übergeben wird, die nur von einer bestimmten Funktion aufgerufen wird. Zum Beispiel haben wir eine Funktion, deren Prototyp ist: Javascript Zum Beispiel haben wir zwei Versionen der Ausgabefunktion, eine für die chinesische Ausgabe und die andere für die englische Ausgabe. Wenn die anonyme Funktion nicht verwendet wird, wird sie wie folgt geschrieben: Javascript Führen Sie diesen Code einmal aus. Das Ausgabeergebnis lautet: Der Wert von 1 2 ist: 3 Javascript Dieses Formular wird normalerweise für Rückruffunktionen verwendet. Der Rückrufmechanismus ist die Essenz von Node.js oder JavaScript. Es wird in zukünftigen Kapiteln vorgestellt. Anonyme Funktionsdeklarationsmethode der Mitgliedsfunktionsdeklaration Obwohl ich es im vorherigen Abschnitt erwähnt habe, lassen Sie uns noch einmal darüber sprechen. Wenn wir Mitgliedsfunktionen einer Klasse deklarieren, verwenden wir normalerweise anonyme Funktionen, um sie zu deklarieren, da diese Funktion ohnehin nur eine Mitgliedsfunktion dieser Klasse ist und nicht separat von anderen Stellen referenziert oder aufgerufen wird. Daher gilt Folgendes Code: Javascript Auf diese Weise sorgen wir dafür, dass die Klasse foo die Funktion setHello hat. 2.3.4. Beliebigkeit der Klassen Das ist mal wieder Blödsinn von mir. Die sogenannte Beliebigkeit von Klassen bedeutet, dass Sie Ihre Klasse überall in JavaScript ändern können, was gewisse Ähnlichkeiten mit Ruby aufweist. String ist beispielsweise tatsächlich eine Klasse mit Mitgliedsvariablen wie Länge und Mitgliedsfunktionen wie indexOf und substr. Falls wir jedoch der Meinung sind, dass diese Zeichenfolge an einigen Stellen unvollständig ist, und unsere eigene Methode hinzufügen möchten, können wir an der gewünschten Stelle eine Funktion hinzufügen, z. B.: Javascript Die Bedeutung dieser Funktion besteht darin, eine Zeichenfolge so zu füllen, dass sie zur Inkarnation von jdm wird. Lass es uns testen: Sie erhalten dieses Ergebnis: sbsbsbsbs 3. Anbei 3.1. Tiefe Kopie Das sogenannte Deep Copy bedeutet, selbst ein neues Array oder Objekt zu erstellen und die Variablenwerte des Basistyps einzeln manuell in das Quellarray oder -objekt zu kopieren, anstatt nur die Referenz des Quellarrays oder -objekts zu übernehmen Quellarray oder -objekt. Das beinhaltet also einen rekursiven Aufruf oder so etwas. Das Folgende ist eine Deep-Copy-Funktion, die ich implementiert habe. Sie können Ihre eigene schreiben und sie Ihrer eigenen Node.js-Wissensdatenbank hinzufügen. Javascript
var a = "1";
var b = 2;
console.log(a b);
console.log(parseInt(a) b);
12
3
var a = 1, b = "1";
console.log(a == b);
var a = 1, b = "1";
console.log(a === b);
Funktion foo() {}
var a = 0;
var b = 'Shh~ Egg Drop Soup schläft. ';
var c = 1,0;
var d = foo;
var e = { "a" : a };
var f = [ 1, 2, 3 ];
var g = null;
var h = undefiniert;
console.log(typeof a);
console.log(typeof b);
console.log(typeof c);
console.log(typeof d);
console.log(typeof e);
console.log(typeof f);
console.log(typeof g);
console.log(typeof h);
Nummer
Zeichenfolge
Nummer
Funktion
Objekt
Objekt
Objekt
undefiniert
„foo“ : null
};
console.log(a["foo"]);
console.log(a["bar"]);
undefiniert
boolean
Array
Unter diesen können die ersten drei Typen direkt zugewiesen werden, und die Zuweisung eines Arrays ist nur eine Referenzzuweisung. Wenn ein Wert in der neuen Variablen geändert wird, ändert sich auch der Wert der alten Variablen. Sie können den folgenden Code direkt ausprobieren :
var bar = foo;
bar[0] = 3;
console.log(foo);
Das Ergebnis ist:
Mit anderen Worten: Wenn ein Array ein neues Array kopiert, kann es keine direkte Zuweisung verwenden, sondern muss „tief kopieren“.
dog[0] = „Shh~“;
dog[1] = „Eiertropfensuppe“;
dog[2] = „Sleeping“;
Javascript
„Shh~“,
„Eiertropfensuppe“,
„Schlafen“
];
var dog = {
„pre“: „Shh~“,
"sub" : {
„Name“: „Eiertropfensuppe“,
„act“: „schlafen“,
„Zeit“: 12
},
„suf“: [ „Ich sagte“, „Es schläft“, „Es schläft nur“ ]
};
Hund
.pre;
dog["pre"];
Funktion foo() {
//...
}
Okay, wir haben eine Foo-Klasse geschrieben.
var bar = new foo();
Unabhängig davon, ob es sich um eine Funktion handelt, handelt es sich, wenn sie in dieser Form (neu) geschrieben ist, um eine Instanziierung dieser Klasse.
Javascript
Funktion foo() {
This.hello = "world";
}
Funktion foo() {
//...
}
foo.prototype.hello = "world";
var bar = new foo();
console.log(bar.hello);
Funktion foo() {
This.hello = "world";
}
foo.prototype.hello = "Eiertropfensuppe";
// Code 2.1
Funktion foo(hello) {
If(hallo === undefiniert) {
This.hello = "world";
} sonst {
This.hello = hallo;
}
}
// Fortsetzung von Code 2.1
var bar1 = new foo();
var bar2 = new foo("Egg Drop Soup");
var bar1 = new foo(undefiniert);
// Fortsetzung von Code 2.1
Funktion setHello(hallo) {
this.hello = hallo;
}
foo.prototype.setHello = setHello;
bar1.setHello("Eierpfannkuchen");
Funktion(Hallo) {
This.hello = hallo;
}
foo.prototype.setHello = function(hello) {
This.hello = hallo;
}
/**
* Wir werden zwei Variablen a und b übergeben,
* Nachdem Sie den Wert von a b berechnet haben, übergeben Sie ihn an func(num)
* Zur Ausgabe gehen
*/
Funktion sumab(a, b, func) {
var c = a b;
func(a, b, c);
}
Funktion zh(a, b, sum) {
console.log(der Wert von a " " b " ist: " sum);
}
Funktion en(a, b, sum) {
console.log(a " plus " b " ist " Summe);
}
sumab(1, 2, zh);
sumab(3, 4, en);
3 plus 4 ist 7
Wenn ein solcher Code in Form einer anonymen Funktion vorliegt, lautet er:
sumab(1, 2, function(a, b, sum) {
console.log(der Wert von a " " b " ist: " sum);
});
sumab(3, 4, function(a, b, sum) {
console.log(a " plus " b " ist " Summe);
});
// Fortsetzung von Code 2.1
foo.prototype.setHello = function(hello) {
This.hello = hallo;
}
String.prototype.sb = function() {
var newstr = "";
for(var i = 0; i < this.length; i ) {
If(i % 2 === 0) newstr = "s";
sonst newstr = "b";
}
Geben Sie newstr;
zurück
};
var str = "Shh~ Egg Drop Soup schläft.";
console.log(str.sb());
Wenn Sie Ihrem Computer sagen: „Shh~ Egg Drop Soup schläft.“ wird Ihr Computer Sie viereinhalb Mal als Idioten bezeichnen. (Schnell zerschlagen)
Funktion cloneObject(src) {
var dest = {};
for(var key in src) {
if(typeof src === "object") dest[key] = cloneObject(src[key]);
sonst dest[key] = src[key];
}
Rückkehrziel;
}