Heim  >  Artikel  >  Web-Frontend  >  Vergleichen Sie die Nutzungsunterschiede zwischen == und ===

Vergleichen Sie die Nutzungsunterschiede zwischen == und ===

巴扎黑
巴扎黑Original
2017-07-24 14:00:062472Durchsuche


1. Für Grundtypen wie Zeichenfolge und Zahl gibt es einen Unterschied zwischen == und ===
1) Vergleich zwischen verschiedene Typen , == Vergleichen Sie „in denselben Typ konvertierte Werte“, um zu sehen, ob die „Werte“ gleich sind, === wenn die Typen unterschiedlich sind, ist das Ergebnis ungleich
2) Vergleichen Sie dasselbe Typ, führen Sie den „Wert“ direkt aus. Beim Vergleich sind die Ergebnisse gleich

2. Bei erweiterten Typen wie Array und Object gibt es keinen Unterschied zwischen = = und ===
Vergleiche „Zeigeradressen“

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, sind die === Ergebnis ist falsch

Manchmal werden drei Gleichheitszeichen (===) verwendet, wenn beurteilt wird, ob zwei Objekte gleich sind der Unterschied zwischen ihm und zwei Gleichheitszeichen (==)? Einfach ausgedrückt: Wenn bei Verwendung von „==" die Typen beider Seiten unterschiedlich sind, konvertiert die js-Engine sie in denselben Typ und vergleicht sie dann, während „===" keine Typkonvertierung durchführt Die beiden Seiten gehören nicht zum gleichen Typ, definitiv nicht gleich. Zum Beispiel:

var a = 0, b = '0';

alert((a == b) + '--' + (a === b))

Das Ergebnis, das Sie zu diesem Zeitpunkt sehen, ist „wahr–falsch“.

=== Beurteilungsregeln

  1. Wenn die Typen unterschiedlich sind, [nicht gleich]

  2. Wenn beide numerische Werte sind , und den gleichen Wert haben, dann ist [gleich] (!Ausnahme): Wenn mindestens einer von ihnen NaN ist, dann ist [nicht gleich]. (Um festzustellen, ob ein Wert NaN ist, können Sie nur isNaN() verwenden)

  3. Wenn beide Zeichenfolgen sind und die Zeichen an jeder Position gleich sind, dann [equal]; Ansonsten [nicht gleich].

  4. Wenn beide Werte wahr oder beide falsch sind, dann [gleich].

  5. Wenn sich zwei Werte auf dasselbe Objekt oder dieselbe Funktion beziehen, dann [gleich], andernfalls [ungleich].

  6. Wenn beide Werte null sind oder beide undefiniert sind, dann [gleich].

== Beurteilungsregel:

  1. Wenn die beiden Werttypen gleich sind, führen Sie einen ===-Vergleich durch.

  2. Wenn zwei Werte unterschiedlichen Typs sind, können sie gleich sein. Führen Sie eine Typkonvertierung durch und vergleichen Sie sie dann gemäß den folgenden Regeln:

  • Wenn einer null und der andere undefiniert ist, dann [gleich].

  • Wenn einer eine Zeichenfolge und der andere ein numerischer Wert ist, konvertieren Sie die Zeichenfolge in einen numerischen Wert und vergleichen Sie ihn dann.

  • Wenn ein Wert wahr ist, konvertieren Sie ihn in 1 und vergleichen Sie ihn. Wenn ein Wert falsch ist, konvertieren Sie ihn in 0 und vergleichen Sie ihn.

  • Wenn eines ein Objekt und das andere ein numerischer Wert oder eine Zeichenfolge ist, konvertieren Sie das Objekt in einen Wert des Basistyps und vergleichen Sie es dann. Das Objekt wird mithilfe seiner toString- oder valueOf-Methode in den Basistyp konvertiert. Integrierte JS-Kernklassen versuchen valueOf vor toString; die Ausnahme ist Date, das die toString-Konvertierung verwendet. Für Nicht-JS-Kernobjekte ist jede andere Kombination von

  • [ungleich].

Besonderes Augenmerk muss auf die Konvertierung von wahr und falsch gelegt werden, zum Beispiel:

alert(true == 1);  //ture
alert(true == 2); //false, true会转换成number,也就是1,当然 1 不等于 2
//可以使用 !! 来把一个数据类型转换为boolean型
alert(true == !!2) //true,!2 === false !(!=2) = !false = true

Außerdem in js, wenn eine Variable in verwendet wird Eine logische Operation. Wenn eine Variable keinen Anfangswert hat oder ihr Wert 0, -0, null, „“, falsch, undefiniert oder NaN ist, ist ihr Wert falsch. Ansonsten ist sein Wert wahr.

Das obige ist der detaillierte Inhalt vonVergleichen Sie die Nutzungsunterschiede zwischen == und ===. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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