Vorwort: Bei der täglichen Entwicklung stoßen wir häufig auf Situationen, in denen wir den Datentyp einer Variablen bestimmen müssen oder ob die Variable null ist. Wie wählen Sie den Operator aus, um den Typ zu bestimmen? Dieser Artikel fasst die Wissenspunkte zu 1. Typ des Operators (1) Der Rückgabewert ist vom Typ String, wobei:
(2) Gemeinsame Verwendungsmethoden console.log(Typ von nicht definiert); //'nicht definiert' console.log(Typ von true);//'bpplean' console.log(typeof ("Nummer")); //'Zeichenfolge' console.log(Typ von "Zahl"); //'Zeichenfolge' console.log(Typ von 1);//'Nummer' console.log(Typ von Symbol());//'Symbol' //Für spezielle Objekte wie Array und Null gibt typeof immer ein Objekt zurück, was die Einschränkung von typeof darstellt console.log(typeof null); //'Objekt' console.log(Typ von [1, 2, 3]);//'Objekt' console.log(Typ von nicht definiert); //'nicht definiert' //Verwenden Sie den typeof-Operator, um Funktionen von anderen Objekten zu unterscheiden function f1() { console.log(111); } console.log(Typ von f1); //'Funktion' console.log(Typ von f1()); // 111 'undefiniert' (3) Sie können typeof nicht verwenden, um zu bestimmen, ob eine Variable existiert var a; wenn (a === undefiniert) { console.log("Variable existiert nicht") } anders { console.log("Variable existiert") } // Die Variable existiert nicht 2. Instanz des Operators Während Funktion f1() { console.log(111); console.log(f1 Instanz von Objekt);//true console.log(f1 Instanz der Funktion);//true console.log(f1 Instanz von RegExp); //false Alle Referenzwerte sind Instanzen von
Funktion meineInstanzvon(links, rechts) { let proto = Object.getPrototypeOf(left), // Den Prototyp des Objekts abrufen prototype = right.prototype; // Das Prototypobjekt der Konstruktorfunktion abrufen // Bestimmen, ob sich das Prototypobjekt der Konstruktorfunktion in der Prototypkette des Objekts befindet while (true) { wenn (!proto) false zurückgibt; wenn (proto === Prototyp) true zurückgibt; proto = Objekt.getPrototypeOf(proto); } } 3. Der Unterschied zwischen typeof und instanceof und Vorschläge zur Verwendung in der Entwicklung Sowohl
Es ist ersichtlich, dass die beiden oben genannten Methoden Nachteile haben und nicht die Anforderungen aller Szenarien erfüllen können. Wenn Sie Datentypen im Allgemeinen erkennen müssen, empfiehlt es sich, console.log(Object.prototype.toString.call(undefined)) //"[Objekt undefiniert]" console.log(Object.prototype.toString.call(true)) // "[Objekt Boolean]" console.log(Object.prototype.toString.call('1')) // "[Objekt String]" console.log(Object.prototype.toString.call(1)) // "[Objektnummer]" console.log(Object.prototype.toString.call(Symbol())) // "[Objekt Symbol]" console.log(Object.prototype.toString.call({})) // "[Objekt Objekt]" console.log(Object.prototype.toString.call(function () { })) // "[Objektfunktion]" console.log(Object.prototype.toString.call([])) //"[Objekt-Array]" console.log(Object.prototype.toString.call(null)) //"[Objekt Null]" console.log(Object.prototype.toString.call(/123/g)) //"[Objekt RegExp]" console.log(Objekt.prototype.toString.call(neues Datum())) //"[Objekt Datum]" Zusammenfassen: Dies ist das Ende dieses Artikels über den Unterschied zwischen Das könnte Sie auch interessieren:
|
>>: Lösung zum Importieren weiterer Daten aus MySQL in Hive
Das Erstellen neuer Images aus vorhandenen Images...
In letzter Zeit wurde der Server häufig mit Brute...
Inhaltsverzeichnis Prämisse TypeScript vs. JavaSc...
Ich bin auf ein Beispiel gestoßen, als ich nach e...
Inhaltsverzeichnis LAMP-Architektur 1.Lampeneinfü...
Lassen Sie uns zunächst über den Unterschied spre...
Inhaltsverzeichnis 1. Vorbereitung: 2. Quellcode-...
Grundlagen Eine Transaktion ist eine atomare Oper...
Ab heute werde ich regelmäßig kleine Wissenspunkte...
Ich bin erst vor Kurzem in eine neue Firma einges...
1. Versuchsbeschreibung Installieren Sie in der v...
Inhaltsverzeichnis 1 Mount-Verzeichnisse und Date...
1. Versionsinformationen # Katze /etc/system-rele...
Das sogenannte dreispaltige adaptive Layout bedeu...
Inhaltsverzeichnis Ereignis Seite wird geladen Ve...