MDC beschreibt den ==
Bediener wie folgt :
Wenn die beiden Operanden nicht vom gleichen Typ sind, konvertiert JavaScript die Operanden und wendet dann einen strengen Vergleich an. Wenn einer der Operanden eine Zahl oder ein Boolescher Wert ist, werden die Operanden nach Möglichkeit in Zahlen konvertiert. Andernfalls, wenn einer der Operanden eine Zeichenfolge ist, wird der andere Operand nach Möglichkeit in eine Zeichenfolge konvertiert.
In diesem Sinne würde ich "true" == true
Folgendes bewerten :
- Sind sie vom gleichen Typ? Nein
- Ist entweder der Operand eine Zahl oder ein Boolescher Wert? Ja
- Können wir beide in eine Zahl umwandeln? Nein (
isNaN(Number("true")) // true
) - Ist einer der Operanden eine Zeichenfolge? Ja
- Können wir den anderen Operanden in einen String konvertieren? Ja (
String(true) === "true" // true
)
Ich habe mit den Saiten "true"
und "true"
, die zu bewerten solltentrue
, aber JavaScript zeigt falsch.
Was habe ich vermisst?
if("true" == true) {console.log("yes")} else {console.log("no")}; if("true") {console.log("yes")} else {console.log("no")}
---> "nein ja"