Es gibt also einiges an gesundem Menschenverstand:
1. Für Grundtypen wie Zeichenfolge, Zahl usw. gibt es einen Unterschied zwischen == und ===
1) Vergleich zwischen verschiedenen Typen, == vergleicht „in denselben Typ konvertierte Werte“, um zu sehen, ob die „Werte“ gleich sind, === wenn die Typen unterschiedlich sind, ist das Ergebnis ungleich
2) Vergleich des gleichen Typs, direkter Vergleich von „Wert“, das Ergebnis ist das gleiche
2. Für erweiterte Typen wie Array, Object sind == und === nicht unterscheidbar
Führen Sie einen „Zeigeradressen“-Vergleich durch
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 ihn aus „Wert“-Vergleich
2) Da die Typen unterschiedlich sind, = ==Das Ergebnis ist falsch
Mit anderen Worten, das doppelte Gleichheitszeichen (==) führt Typkonvertierung während des Betriebs, während das dreifache Gleichheitszeichen (== =) Nr.
Zum Beispiel:alert('55' == 55); //true alert('55' === 55); //false
Datentypen in Javascript-Sprache (Originalwert, auch einfacher Datentyp genannt) : Das heißt, Undefiniert, Null, Boolean, Zahl und String-Typ . Da diese primitiven Typen einen festen Platz einnehmen, können sie in einem kleineren Speicherbereich – dem Stapel – gespeichert werden. Dieser Speicher erleichtert das schnelle Nachschlagen des Werts der Variablen. (Einzelheiten finden Sie unter: http://www.w3school.com.cn/js/pro_js_value.asp)
Der implizite Konvertierungsmechanismus, der das doppelte Gleichheitszeichen (==) in Javascript verwendet, um Gleichheit zu bestimmen: 1, wenn beide Seiten einfache Typen sind: 1,1, beide Seiten sind einfache Typen und die Typen sind gleich, dann vergleichen Sie direkt.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
StringZahl ist gleich numerischer Wert, 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
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
var obj={ name:"熊仔其人", getName:function(){ return $(this).name; } }; console.log(obj.toString()); //[object Object]
var arr=[1,2,3]; console.log(arr.valueOf()); //(3) [1, 2, 3]
numerische Typ nicht wie erwartet zurückgegeben wird. äußern.
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); //truevar 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
var obj= { }; obj.valueOf=function(){ return 'a'; } obj.toString=function(){ return 2; } console.log(obj=='a'); //truevar obj2= { }; obj2.valueOf=function(){ return 'b'; } obj2.toString=function(){ return 'a'; } console.log(obj2=='a'); //false
Wenn das Objekt in einen einfachen Typ konvertiert wird, wird zuerst die valueOf-Methode aufgerufen, wenn sie mit verglichen werden kann Ein einfacher Wert wird direkt verglichen. Die toString-Methode 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 von aufgerufen Standard.Das obige ist der detaillierte Inhalt vonBeispiel für einen impliziten Konvertierungsmechanismus des doppelten Gleichheitszeichens in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!