Brushing sur ==
et ===
, je ne peux pas vraiment me convaincre avec une explication à ce sujet.Pourquoi 1.2 == true renvoie false si Boolean (1.2) est vrai?
Je prends un nombre à virgule flottante et fais un ==
avec un Boolean
true
. Il renvoie false
. Mais quand je convertis explicitement le nombre à virgule flottante en un booléen, il retourne vrai. Le == ne devrait-il pas d'abord convertir le 1.2 en un booléen et le comparer au vrai de l'autre côté?
> Boolean(1.2)
true
> 1.2 == true
false
D'autre part, un "entier" se comportera comme je l'attend.
> 1 == true
true
Merci. Ne devrait-on pas convertir le nombre à gauche en Booléen et non le Booléen à droite en nombre? Je n'ai pas encore consacré du temps à lire la norme ECMA, donc désolé de demander. –
@DrunkenMaster Non, lorsque vous utilisez l'opérateur '==' pour comparer des valeurs, Basé sur AECAlgorithm les deux de son type seront forcés au type 'number'. J'avais donné les numéros de pas de l'algorithme original, jetez un oeil à ceux-ci. Cela vous donnera une prise en main ferme sur ce concept. –
OK, je regardais un cours vidéo, où le narrateur commente cela et il explique que le nombre est converti, pas le booléen. Merci pour la référence. –