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
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!