J'ai dû écrire une routine qui s'incrémente la valeur d'une variable par 1 si son type est - number
et affecte 0 à la variable si non, où la variable est initialement null
ou undefined
.
La première mise en œuvre a été v >= 0 ? v += 1 : v = 0
parce que je pensais que ce qui n'est pas un nombre ferait une expression arithmétique faux, mais c'était faux puisque null >= 0
est évaluée à vrai. Ensuite, j'ai appris null
se comporte comme 0 et les expressions suivantes sont toutes évaluées à true.
null >= 0 && null <= 0
!(null < 0 || null > 0)
null + 1 === 1
1 / null === Infinity
Math.pow(42, null) === 1
Bien sûr, null
n'est pas 0. null == 0
est évaluée à false. Cela rend l'apparence tautologique expression (v >= 0 && v <= 0) === (v == 0)
faux.
Pourquoi est - null
0, bien qu'il n'est pas fait 0?