Heim  >  Artikel  >  Web-Frontend  >  Einführung in die implizite Typkonvertierung von Vergleichsoperatoren in JavaScript (mit Beispielen)

Einführung in die implizite Typkonvertierung von Vergleichsoperatoren in JavaScript (mit Beispielen)

不言
不言nach vorne
2019-03-25 14:26:372283Durchsuche

Dieser Artikel bietet Ihnen eine Einführung in die implizite Typkonvertierung von Vergleichsoperatoren in JavaScript. Ich hoffe, dass er für Sie hilfreich ist.

Ich glaube, Sie sehen oft „==“ und „===“ in Ihrem Code, aber verstehen Sie Vergleichsoperatoren und ihre impliziten Konvertierungen heute noch einmal?

Kongruenzoperator====

Erklärung: Strikte Übereinstimmung, keine Typkonvertierung, Datentyp und Wert müssen genau gleich sein

先判断类型,如果类型不是同一类型的话直接为false;

1 对于基本数据类型(值类型): Number,String,Boolean,Null和Undefined:两边的值要一致,才相等
      console.log(null === null)   // true
      console.log(undefined === undefined)  // true
   注意: NaN: 不会等于任何数,包括它自己
   console.log(NaN === NaN)  // false 

2 对于复杂数据类型(引用类型): Object,Array,Function等:两边的引用地址如果一致的话,是相等的
     arr1 = [1,2,3];
     arr2 = arr1;
     console.log(arr1 === arr2)   // true

Gleichheitsoperator==

Nicht strikte Übereinstimmung: Typkonvertierung ist möglich, es gibt jedoch fünf Situationen mit Vorbedingungen
(Der folgende Code verwendet x == y als Beispiel)

Sowohl x als auch y sind null oder undefiniert:
Regeln: Keine implizite Typkonvertierung, bedingungslos „true“ zurückgeben

console.log ( null == undefined );//true
console.log ( null == null );//true
console.log ( undefined == undefined );//true

x oder y ist NaN: NaN ist nicht gleich irgendeiner Zahl
Regeln: Keine implizite Typkonvertierung, bedingungslos „false“ zurückgeben

console.log ( NaN == NaN );//false

x und y sind beide String, Boolescher Wert, Zahl
Regeln: Es gibt eine implizite Typkonvertierung, die Daten, die nicht vom Zahlentyp sind, in Zahlen umwandelt

console.log ( 1 == true );//true    (1) 1 == Number(true)
console.log ( 1 == "true" );//false   (1) 1 == Number('true')
console.log ( 1 == ! "true" );//false  (1) 1 == !Boolean('true')  (2) 1 == !true  (3) 1 == false  (4)1 == Number(false)
console.log ( 0 == ! "true" );//true
console.log(true == 'true') // false

x oder y sind komplexe Daten Typ: Der ursprüngliche Wert des komplexen Datentyps wird zuerst abgerufen und dann links verglichen.
Der ursprüngliche Wert des komplexen Datentyps: Rufen Sie zuerst die valueOf-Methode und dann die toString-Methode auf.
valueOf: gibt sich im Allgemeinen selbst zurück Standardmäßig
Array toString: Standardmäßig wird die Join-Methode aufgerufen, um jedes Element zu verbinden, und die verbundene Zeichenfolge wird zurückgegeben.

console.log ( [].toString () );//空字符串
console.log ( {}.toString () );//[object Object]
注意:  空数组的toString()方法会得到空字符串,
      而空对象的toString()方法会得到字符串[object Object] (注意第一个小写o,第二个大写O哟)

console.log ( [ 1, 2, 3 ].valueOf().toString());//‘1,2,3’
console.log ( [ 1, 2, 3 ] == "1,2,3" );//true  (1)[1,2,3].toString() == '1,2,3'  (2)'1,2,3' == '1,2,3'
console.log({} == '[object Object]');//true

x und y sind beide komplexe Datentypen:
Die Regel vergleicht nur Adressen und gibt „true“ zurück, wenn die Adressen konsistent sind. Andernfalls wird „false“ zurückgegeben Weitere spannende Inhalte finden Sie in der Rubrik

JavaScript-Video-Tutorial

auf der PHP-Chinese-Website!

Das obige ist der detaillierte Inhalt vonEinführung in die implizite Typkonvertierung von Vergleichsoperatoren in JavaScript (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen