it-swarm.com.de

Warum geben (null == false) und (null == true) beide falsch zurück?

Ich weiß, dass null ein Objekt ohne Attribute oder Funktionen ist.

Ich bin jedoch verwirrt, dass console.log(null == false); und console.log(null == true); beide falsch sind.

Was sind die Konvertierungsregeln zwischen null und boolean?

33
iatboy

Dies liegt daran, dass der Abstract Equality-Vergleichsalgorithmus erfordert, dass, wenn Type(x) oder Type(y) ein Boolean im Ausdruck x == y ist, der Boolean-Wert über ToNumber welche true in 1 und false in +0 konvertiert.

Dies bedeutet, dass jeder Vergleich von true == something oder something == true zu 1 == something oder something == 1 führt (Ersetzen von true und 1 durch false und +0 für false).

Der Null-Typ ist nicht gleich 1 oder +0 (tatsächlich ist Null nur vergleichbar mit undefined in der AECA).

Es gibt eine ausführliche Erörterung aller verschiedenen Arten von Gleichheit in JavaScript auf MDN , die es sich lohnt, einen Blick darauf zu werfen, wenn Sie mehr wissen möchten.

Wenn Sie jedoch null zu einer Zahl zwingen, wird erzwungen zu +0 , so dass +null == false tatsächlich true zurückgibt.

44
Sean Vieira

Antwort: Es gibt keinen relativen Aspekt zwischen null und boolean.

MDN-Quelle: -

Der Wert null ist ein Literal (keine Eigenschaft des globalen Objekts wie Undefined). In APIs wird häufig null an der Stelle abgerufen, an der ein Objekt kann erwartet werden, aber kein Objekt ist relevant. Bei der Prüfung auf null oder undefiniert, hüten Sie sich vor den Unterschieden zwischen Gleichheit (==) und Identitätsoperatoren (===) (die Typkonvertierung wird mit dem -Element durchgeführt).

// foo does not exist, it is not defined and has never been initialized:
> foo
"ReferenceError: foo is not defined"

// foo is known to exist now but it has no type or value:
> var foo = null; foo
"null"

Unterschied zwischen null und undefined

typeof null        // object (bug in ECMAScript, should be null)
typeof undefined   // undefined
null === undefined // false
null  == undefined // true

Javascirpt | MDN

2

Der Wert null ist ein JavaScript-Literal, das einen "leeren" Wert oder "undefined" darstellt. null ist einer der primitiven Werte von JavaScript. Es ist weder gleich boolean true noch boolean false, da der Wert nicht definiert ist. Der Wert von null neigt eher zu falsch, obwohl er nicht false ist. Deshalb heißt es "falsey" -Operatoren und ein if (var) { }-Block wird nicht ausgeführt, wenn varnull ist.

1
Diptendu

Hinzufügen zur aktuellen Diskussion. null> = false gibt true zurück.

Ich glaube das liegt daran, dass dies als interpretiert wird! (Null <false)