Je sais que null
est un objet sans attributs ni fonctions.
Cependant, je suis confus quant à la raison pour laquelle console.log(null == false);
et console.log(null == true);
renvoient false.
Quelles sont les règles de conversion entre null
et boolean
?
Cela est dû au fait que l'algorithme de comparaison d'égalité abstraite exige que si Type(x)
ou Type(y)
soit un booléen dans l'expression x == y
, la valeur booléenne doit alors être contrainte à un nombre via ToNumber
, qui convertit true
en 1 et false
en +0
.
Cela signifie que toute comparaison de true == something
ou something == true
aboutit à 1 == something
ou something == 1
(en remplaçant true
et 1
par false
et +0
pour false
).
Le type Null ne se compare pas comme étant égal à 1 ou à +0 (en fait, null est uniquement comparable à undefined
dans la loi AECA).
Il existe une discussion détaillée sur les différents types d’égalité en JavaScript sur MDN qui mérite d’être examinée si vous souhaitez en savoir plus.
Cependant, si vous contraignez null
à un nombre, il est contraint à +0
afin que +null == false
renvoie réellement true
.
Réponse: Il n'y a pas d'aspect relatif entre null et boolean.
Source MDN: -
La valeur null est un littéral (et non une propriété de l'objet global comme Undefined peut l'être). Dans les API, la valeur null est souvent extraite à la place d'un objet peut être attendu mais aucun objet n'est pertinent. Lors de la vérification de null ou indéfini méfiez-vous des différences entre égalité (==) et Identité (===) opérateurs (la conversion de type est effectuée avec le former).
// 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"
Différence entre null et indéfini
typeof null // object (bug in ECMAScript, should be null) typeof undefined // undefined null === undefined // false null == undefined // true
La valeur null
est un littéral JavaScript représentant une valeur "vide" ou "indéfinie". null
est l'une des valeurs primitives de JavaScript. Il n'est ni égal à booléen true
ni égal à booléen false
car sa valeur est indéfinie. La valeur de null
est plus encline à false même si ce n'est pas false
. C'est pourquoi on l'appelle "opérateurs falsey" et un bloc if (var) { }
n'est pas exécuté lorsque var
est null
.
Ajout à la discussion en cours. null> = false renvoie true.
Je crois que c’est parce que cela est interprété comme! (Null <false)