Einführung
Wenn Aussagen Aussagen sein sollten, die Programmierer häufiger verwenden, und häufig müssen sie bei Urteilen treffen. Wenn Anweisungen im Allgemeinen doppelte Vorzeichen verwenden, um festzustellen, ob die beiden Elemente zuvor konsistent sind. Wenn sie konsistent sind, ist die Rückgabe wahr und führen Sie die folgende Anweisung aus. Andernfalls führen Sie andere Aussagen aus. Die in diesem Artikel erwähnte implizite Typumwandlung bezieht sich auf die durch == verursachte Konvertierung. Um ein einfaches Beispiel zu geben, ist ein doppeltes gleiches Vorzeichen kein Gesamtzeichen, ein Gesamtszeichen ist "===" drei gleiche Vorzeichen und die Anweisung "1" == 1, dann wird im Allgemeinen die vorherige Zeichenfolge "1" in eine Zahl 1 umgewandelt und dann verglichen. In diesem Beispiel sollten Sie verstehen, was implizite Typkonvertierung ist!
Implizite Typkonvertierungsschritte
1. Überprüfen Sie zunächst, ob vor und nach dem doppelten gleichen Zeichen NAN vorhanden ist. Wenn Nan existiert, geben alle falsch zurück.
2. Schauen wir uns an, ob es vor und nach dem doppelten gleichen Zeichen Booleschen gibt. Wenn es einen Booleschen gibt, wandeln Sie den Booleschen in eine Nummer um. (Falsch ist 0, wahr ist 1)
3. Überprüfen Sie dann, ob vor und nach dem doppelten gleichen Vorzeichen Strings vorhanden ist. Es gibt drei Situationen:
1. Die andere Partei ist ein Objekt, und das Objekt wird unter Verwendung von toString () oder valueOf () konvertiert.
2. Die andere Partei ist eine Zahl, und die Zeichenfolge wird in eine Zahl konvertiert. (Beispiel wurde zuvor gegeben)
3. Die andere Partei ist eine Zeichenfolge, direkt vergleichen;
4. Andere geben falsch zurück
4. Wenn es sich um eine Nummer handelt, ist die andere Partei ein Objekt. Das Objekt nimmt ValueOf () oder toString () zum Vergleich an, und alle anderen Objekte geben falsch zurück.
5. null, undefiniert wird keine Typumwandlung durchführt, aber sie sind gleich
Die obige Umwandlungsordnung muss berücksichtigt werden. Arten von Fragen treten häufig während der Interviews auf.
Numerische Umwandlung von .ToString () -Methode und .Valueof () -Methode
Normalerweise denken wir, dass das Umwandeln eines Objekts in eine Zeichenfolge die Methode toString () aufgerufen und in eine Nummer konvertiert werden muss, um die ValueOf () -Methode aufzurufen, aber es ist nicht so einfach, wenn es tatsächlich angewendet wird. Siehe das folgende Codebeispiel:
var obj = {webname: "haorooms front-end blog", url: "www.vevb.com"} console.log (obj.toString ()); // [Objektobjekt]Schauen wir uns in ähnlicher Weise die ValueOf () -Methode erneut an:
var arr = [1, 2, 3]; console.log (arr.ValueOf ()); // [1, 2, 3]
Wie aus dem obigen Code ersichtlich ist, wandelt die ValueOf () -Methode das Objekt nicht in eine Zahl um, die das Objekt widerspiegelt. Stattdessen verwenden wir toString ()
var arr = [1, 2, 3]; console.log (arr.toString ()); // 1,2,3
Hinweis: Viele Freunde glauben, dass Sie beim Konvertieren in eine Zeichenfolge zuerst die Methode toString () aufrufen müssen. Tatsächlich ist dies ein falsches Verständnis. Wir sollten so verstehen. Das Aufrufen der Methode toString () kann in eine Zeichenfolge konvertiert werden, bedeutet jedoch nicht unbedingt, dass das Konvertieren einer Zeichenfolge zuerst die Methode toString () aufgerufen wird.
Schauen wir uns den folgenden Code an:
var arr = {}; arr.Valueof = function () {return 1; } arr.toString = function () {return 2; } console.log (arr == 1); // truevar arr = {}; arr.ValueOf = function () {return []; } arr.toString = function () {return 1; } console.log (arr == 1); // trueWir können aus dem obigen Code sehen, dass der erste Aufruf von ValueOf () für die Konvertierung. Wenn ValueOf () kein numerischer Wert ist, wird das ToString zur Konvertierung aufgerufen!
var arr = {}; arr.Valueof = function () {return "1"; } arr.toString = function () {return "2"; } console.log (arr == "1"); // trueWenn "1" eine Zeichenfolge ist, dann nennt es das erste, was es ValueOf () nennt.
var arr = [2]; console.log (arr + "1"); // 21
Im obigen Beispiel wird ToString () genannt; Weil arr.toString () 2 folgt.
Der Konvertierungsprozess ist so. Erstens wird ARR zuerst die ValueOf () -Methode aufrufen, aber diese Methode der Nummer wird einfach vererbt und nicht umgeschrieben (natürlich wird dieses Umschreiben von uns nicht implementiert). Der Rückgabewert ist das Array -Objekt selbst, nicht ein Werttyp. Daher nennen wir die Methode toString (), wodurch der Zweck der Konvertierung in eine Zeichenfolge erreicht wird.
Zusammenfassung
Die meisten Objekte konvertieren implizit in Werttypen, sind der erste Versuch, die ValueOF () -Methode aufzurufen. Das Datumsobjekt ist jedoch eine Ausnahme. Die ValueOF ()- und toString () -Methoden dieses Objekts wurden sorgfältig umgeschrieben. Die Standardeinstellung besteht darin, die Methode toString () aufzurufen, z. B. die Verwendung des + Operators. Wenn es sich in anderen arithmetischen Betriebsumgebungen befindet, wird die ValueOF () -Methode stattdessen aufgerufen.
var date = new Date (); console.log (Datum + "1"); // Sun Apr 17 2014 17:54:48 GMT + 0800 (CST) 1Console.log (Datum + 1); // 1460886888556console.log (Datum * 1); // 146088688557