Heim Web-Frontend js-Tutorial Detaillierte Erläuterung des impliziten Konvertierungsmechanismus von doppelten Gleichheitszeichen (==) in Javascript

Detaillierte Erläuterung des impliziten Konvertierungsmechanismus von doppelten Gleichheitszeichen (==) in Javascript

Jan 02, 2018 am 09:32 AM
javascript js 机制

Es gibt zwei Möglichkeiten, Gleichheitsbeziehungen in Javascript zu beurteilen: das doppelte Gleichheitszeichen (==) und das dreifache Gleichheitszeichen (===). Das doppelte Gleichheitszeichen (==) zeigt Wertgleichheit an, während das dreifache Gleichheitszeichen (===) strikte Gleichheit anzeigt (ob die Werte und Typen vollständig gleich sind). Dieser Artikel stellt Ihnen hauptsächlich den impliziten Konvertierungsmechanismus mit doppeltem Gleichheitszeichen (==) in JavaScript vor. Er ist sehr gut und hat Referenzwert. Ich hoffe, er kann jedem helfen.

Es gibt also einiges an gesundem Menschenverstand:

1 Für Grundtypen wie Zeichenfolge und Zahl gibt es einen Unterschied zwischen == und ===

1) Zwischen verschiedenen Typen vergleichen, == „in denselben Typ konvertierte Werte“ vergleichen, um zu sehen, ob die „Werte“ gleich sind, === wenn die Typen unterschiedlich sind, ist das Ergebnis ungleich

 2) Vergleichen Sie denselben Typ und führen Sie direkt „Wert“ aus. „Vergleichen, die Ergebnisse sind die gleichen

2. Bei erweiterten Typen wie Array und Object gibt es keinen Unterschied zwischen == und ===

„Zeigeradressen“-Vergleich durchführen

3 Es gibt einen Unterschied zwischen Basistypen und erweiterten Typen, == und ===

 1) Konvertieren Sie für == den erweiterten Typ in einen Basistyp und führen Sie einen „Wert“-Vergleich durch

 2 ) Da die Typen unterschiedlich sind, ist das Ergebnis === falsch

Mit anderen Worten, das doppelte Gleichheitszeichen (==) wird ausgeführt Typkonvertierung während des Betriebs, das dreifache Gleichheitszeichen (===) jedoch nicht.

Zum Beispiel:

alert('55' == 55); //true
alert('55' === 55); //false
Nach dem Login kopieren

Die fünf grundlegenden Datentypen (primitive Werte, auch einfache Datentypen genannt) in der Javascript-Sprache: Undefiniert, Null, Boolean, Zahl und Zeichenfolge. Da diese primitiven Typen einen festen Platz einnehmen, können sie in einem kleineren Speicherbereich – dem Stapel – gespeichert werden. Eine solche Speicherung erleichtert die schnelle Suche nach Variablenwerten.

Der implizite Konvertierungsmechanismus unter Verwendung des doppelten Gleichheitszeichens (==) in Javascript zur Bestimmung der Gleichheit:

1, wenn beide Seiten einfache Typen sind:

 1,1, wenn beide Seiten einfache Typen sind und die Typen gleich sind, werden sie direkt verglichen.

console.log(1==1); //true
console.log("1"=="1"); //true
console.log(false==false); //true
console.log(null==null); //true
console.log(undefined==undefined); //true
Nach dem Login kopieren

1.2. Beide Seiten sind einfache Typen. Wenn die Typen unterschiedlich sind, werden sie zuerst in einen numerischen Vergleich umgewandelt (Boolean hat nur zwei Werte: true==1, false==0; null und undefiniert sind gleich; Zeichenkettennummern sind gleich numerischen Werten, leere Zeichenfolge „“==0;)

console.log(1==true); //true
console.log(0==false); //true
console.log(1=="1"); //true
console.log(0==""); //true
console.log(0==null); //false
console.log(0==undefined); //false
console.log(null==undefined); //true
Nach dem Login kopieren

2 Typ) wird der erweiterte Typ implizit in einfache Typen konvertiert und erneut verglichen.

console.log(Object==Object); //true
console.log(Object=={}); //false
console.log(0=={}); //false
console.log(0==[]); //true
console.log(Array==Array); //true
console.log(Object==Array); //false
Nach dem Login kopieren

3. Wenn beide Seiten Referenztypen (erweiterte Typen) sind, wird ein „Zeigeradressen“-Vergleich durchgeführt.

Wichtige Punkte – toString() und valueOf()

Der erste Eindruck, den viele Leute haben, wenn sie diese beiden Methoden sehen, ist, dass die toString()-Methode ein Objekt in einen String konvertiert und die valueOf Die Methode wandelt es in einen String um. Konvertiert ein Objekt in einen numerischen Wert.

Diese Idee ist sehr einseitig:

var obj={
  name:"熊仔其人",
  getName:function(){ return $(this).name; }
};
console.log(obj.toString()); //[object Object]
Nach dem Login kopieren

Definieren Sie ein obj-Objekt und rufen Sie seine toString-Methode auf. Der Rückgabewert ist [obj Object ]. Es wurde festgestellt, dass der Wert keine Zeichenfolgendarstellung seines Inhalts zurückgibt, wie wir dachten.

var arr=[1,2,3];
console.log(arr.valueOf()); //(3) [1, 2, 3]
Nach dem Login kopieren

Definieren Sie ein Array arr, rufen Sie seine valueOf-Methode auf, der Rückgabewert ist [1, 2, 3] und stellen Sie fest, dass es keine numerische Darstellung zurückgibt, wie wir es uns vorgestellt haben.

Tatsächlich ist das eigentliche Verständnis folgendes: Durch Aufrufen der toString()-Methode des Objekts kann das Objekt in einen String konvertiert werden. Wenn Sie es jedoch in einen String konvertieren möchten, müssen Sie nicht unbedingt toString aufrufen Verfahren.

Schauen wir uns den Code unten noch einmal an.

var obj= { };   
obj.valueOf=function(){ return 1; }
obj.toString=function(){ return 2; }
console.log(obj==1);  //true
var obj2= { };   
obj2.valueOf=function(){ return 2; }
obj2.toString=function(){ return 1; }
console.log(obj2==1);  //false                                      
var obj3={ };
obj3.valueOf=function(){ return []; }
obj3.toString=function(){ return 1; }
console.log(obj3==1);  //true
Nach dem Login kopieren

Im obigen Code haben wir ein Objekt obj, obj2 definiert und die Rückgabewerte der Methoden valueOf und toString definiert. Durch Vergleichen mit 1 auf Gleichheit haben wir festgestellt, dass die Methode valueOf ist wurde zuerst aufgerufen.

Definiert dann ein Objekt obj3, definiert den Rückgabewert der Methoden valueOf und toString und vergleicht ihn mit 1, um festzustellen, dass es die Methode toString aufruft.

Dann schauen wir uns den folgenden Code an:

var obj= { };   
obj.valueOf=function(){ return 'a'; }
obj.toString=function(){ return 2; }
console.log(obj=='a');  //true
var obj2= { };   
obj2.valueOf=function(){ return 'b'; }
obj2.toString=function(){ return 'a'; }
console.log(obj2=='a');  //false
Nach dem Login kopieren

Im obigen Code 2 ist ein Objekt obj definiert. Durch Vergleich mit der Zeichenfolge „a“ wird festgestellt, dass Es ruft die valueOf-Methode auf.

Dann gibt der Vergleich zwischen Objekt obj2 und 'a' false zurück und es wird festgestellt, dass die toString-Methode nicht aufgerufen wird.

Daraus können wir die Schlussfolgerung ziehen:

Wenn das Objekt in einen einfachen Typ konvertiert wird, wird zuerst die valueOf-Methode aufgerufen. Wenn sie mit einem einfachen Wert verglichen werden kann, wird dies der Fall sein direkt verglichen werden, und toString wird zu diesem Zeitpunkt nicht mehr aufgerufen. Wenn die valueOf-Methode nach dem Aufruf der valueOf-Methode nicht mit einem einfachen Wert verglichen werden kann, wird die toString-Methode erneut aufgerufen, um schließlich das Vergleichsergebnis zu erhalten.

Zu beachten ist jedoch, dass das Date-Objekt die oben genannten Regeln nicht erfüllt. Die Methoden toString und valueOf des Date-Objekts wurden neu definiert und die toString-Methode wird standardmäßig aufgerufen.

PS: js implizite Konvertierungsregeln für Doppel-Gleichheitszeichen

Wenn Sie Doppel-Gleichheitszeichen zum Vergleich verwenden und die beiden Operandentypen unterschiedlich sind, führt das Doppel-Gleichheitszeichen eine implizite Konvertierung durch. Konvertieren, konvertieren in den gleichen Typ und vergleichen Sie dann die Konvertierungsregeln, die Sie auf Seite P51 des Little Red Book finden. (Ich vergesse es immer und habe immer noch das Gefühl, dass gutes Gedächtnis nicht so gut ist wie schlechtes Schreiben. Schreiben hat immer tiefgreifende Auswirkungen)

1. Ein Operand ist ein boolescher Wert und dann vergleichen. Falsch ist 0, wahr ist 1.

2. Eines ist eine Zeichenfolge und das andere ist eine Zahl. Wandeln Sie Zeichenfolgen in Zahlen um und vergleichen Sie sie.

3. Ein Operator ist ein Objekt und der andere ist kein Objekt. Verwenden Sie zuerst valueOf(), um den Objektwerttyp abzurufen, und vergleichen Sie ihn dann gemäß anderen Regeln.

Verwandte Empfehlungen:

Beispiel für einen impliziten Doppelgleichheitszeichen-Konvertierungsmechanismus in Javascript

Implizite Konvertierung von Oracle-Datentypen

Über einige implizite Konvertierungs- und Zusammenfassungsbeispiele in JavaScript

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des impliziten Konvertierungsmechanismus von doppelten Gleichheitszeichen (==) in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Empfohlen: Ausgezeichnetes JS-Open-Source-Projekt zur Gesichtserkennung und -erkennung Empfohlen: Ausgezeichnetes JS-Open-Source-Projekt zur Gesichtserkennung und -erkennung Apr 03, 2024 am 11:55 AM

Die Technologie zur Gesichtserkennung und -erkennung ist bereits eine relativ ausgereifte und weit verbreitete Technologie. Derzeit ist JS die am weitesten verbreitete Internetanwendungssprache. Die Implementierung der Gesichtserkennung und -erkennung im Web-Frontend hat im Vergleich zur Back-End-Gesichtserkennung Vor- und Nachteile. Zu den Vorteilen gehören die Reduzierung der Netzwerkinteraktion und die Echtzeiterkennung, was die Wartezeit des Benutzers erheblich verkürzt und das Benutzererlebnis verbessert. Die Nachteile sind: Es ist durch die Größe des Modells begrenzt und auch die Genauigkeit ist begrenzt. Wie implementiert man mit js die Gesichtserkennung im Web? Um die Gesichtserkennung im Web zu implementieren, müssen Sie mit verwandten Programmiersprachen und -technologien wie JavaScript, HTML, CSS, WebRTC usw. vertraut sein. Gleichzeitig müssen Sie auch relevante Technologien für Computer Vision und künstliche Intelligenz beherrschen. Dies ist aufgrund des Designs der Webseite erwähnenswert

PHP- und JS-Entwicklungstipps: Beherrschen Sie die Methode zum Zeichnen von Aktienkerzendiagrammen PHP- und JS-Entwicklungstipps: Beherrschen Sie die Methode zum Zeichnen von Aktienkerzendiagrammen Dec 18, 2023 pm 03:39 PM

Mit der rasanten Entwicklung der Internetfinanzierung sind Aktieninvestitionen für immer mehr Menschen zur Wahl geworden. Im Aktienhandel sind Kerzendiagramme eine häufig verwendete Methode der technischen Analyse. Sie können den sich ändernden Trend der Aktienkurse anzeigen und Anlegern helfen, genauere Entscheidungen zu treffen. In diesem Artikel werden die Entwicklungskompetenzen von PHP und JS vorgestellt, der Leser wird zum Verständnis des Zeichnens von Aktienkerzendiagrammen geführt und es werden spezifische Codebeispiele bereitgestellt. 1. Aktien-Kerzendiagramme verstehen Bevor wir uns mit dem Zeichnen von Aktien-Kerzendiagrammen befassen, müssen wir zunächst verstehen, was ein Kerzendiagramm ist. Candlestick-Charts wurden von den Japanern entwickelt

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

Die Beziehung zwischen js und vue Die Beziehung zwischen js und vue Mar 11, 2024 pm 05:21 PM

Die Beziehung zwischen js und vue: 1. JS als Eckpfeiler der Webentwicklung; 2. Der Aufstieg von Vue.js als Front-End-Framework; 3. Die komplementäre Beziehung zwischen JS und Vue; Vue.

So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript Jan 05, 2024 pm 01:37 PM

Einführung in die Methode zum Abrufen des HTTP-Statuscodes in JavaScript: Bei der Front-End-Entwicklung müssen wir uns häufig mit der Interaktion mit der Back-End-Schnittstelle befassen, und der HTTP-Statuscode ist ein sehr wichtiger Teil davon. Das Verstehen und Abrufen von HTTP-Statuscodes hilft uns, die von der Schnittstelle zurückgegebenen Daten besser zu verarbeiten. In diesem Artikel wird erläutert, wie Sie mithilfe von JavaScript HTTP-Statuscodes erhalten, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist ein HTTP-Statuscode? HTTP-Statuscode bedeutet, dass der Dienst den Dienst anfordert, wenn er eine Anfrage an den Server initiiert

Tiefes Verständnis der Mechanismen der Neuberechnung und Darstellung von CSS-Layouts Tiefes Verständnis der Mechanismen der Neuberechnung und Darstellung von CSS-Layouts Jan 26, 2024 am 09:11 AM

CSS-Reflow und Repaint sind sehr wichtige Konzepte bei der Optimierung der Webseitenleistung. Bei der Entwicklung von Webseiten kann uns das Verständnis der Funktionsweise dieser beiden Konzepte dabei helfen, die Reaktionsgeschwindigkeit und das Benutzererlebnis der Webseite zu verbessern. Dieser Artikel befasst sich mit den Mechanismen des CSS-Reflows und Repaints und stellt spezifische Codebeispiele bereit. 1. Was ist CSS-Reflow? Wenn sich die Sichtbarkeit, Größe oder Position von Elementen in der DOM-Struktur ändert, muss der Browser die CSS-Stile neu berechnen und anwenden und dann das Layout neu gestalten

js-Methode zum Aktualisieren der aktuellen Seite js-Methode zum Aktualisieren der aktuellen Seite Jan 24, 2024 pm 03:58 PM

js-Methoden zum Aktualisieren der aktuellen Seite: 1. location.reload(); 2. location.href(); 4. window.location. Detaillierte Einführung: 1. location.reload(), verwenden Sie die Methode location.reload(), um die aktuelle Seite neu zu laden. 2. location.href, Sie können die aktuelle Seite aktualisieren, indem Sie das Attribut location.href usw. festlegen.

Die KI-Ära von JS ist da! Die KI-Ära von JS ist da! Apr 08, 2024 am 09:10 AM

Einführung in JS-Torch JS-Torch ist eine Deep-Learning-JavaScript-Bibliothek, deren Syntax PyTorch sehr ähnlich ist. Es enthält ein voll funktionsfähiges Tensorobjekt (kann mit verfolgten Farbverläufen verwendet werden), Deep-Learning-Ebenen und -Funktionen sowie eine automatische Differenzierungs-Engine. JS-Torch eignet sich für die Deep-Learning-Forschung in JavaScript und bietet viele praktische Tools und Funktionen zur Beschleunigung der Deep-Learning-Entwicklung. Image PyTorch ist ein Open-Source-Deep-Learning-Framework, das vom Meta-Forschungsteam entwickelt und gepflegt wird. Es bietet einen umfangreichen Satz an Tools und Bibliotheken zum Erstellen und Trainieren neuronaler Netzwerkmodelle. PyTorch ist einfach, flexibel und benutzerfreundlich konzipiert und verfügt über dynamische Berechnungsdiagrammfunktionen

See all articles