J'ai dû écrire une routine qui incrémente la valeur d'une variable de 1 si son type est number
et affecte 0 à la variable sinon, où la variable est initialement null
ou undefined
.Pourquoi `null> = 0 && null <= 0` mais pas` null == 0`?
La première implémentation était v >= 0 ? v += 1 : v = 0
car je pensais que tout ce qui n'était pas un nombre rendrait une expression arithmétique fausse, mais elle était erronée puisque null >= 0
est évalué à vrai. Puis j'ai appris null
se comporte comme 0 et les expressions suivantes sont toutes évaluées à vrai.
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'expression apparemment tautologique (v >= 0 && v <= 0) === (v == 0)
fausse.
Pourquoi est null
comme 0, bien qu'il ne soit pas réellement 0?
Il parle de Javascript. Votre exemple est en PHP. Dans l'opérateur PHP == compare les valeurs d'une manière spéciale. Vous pouvez faire des comparaisons vraiment folles comme "10" == "1e1" (ce qui est vrai). Si vous avez utilisé l'opérateur ===, vous obtiendrez un résultat totalement différent car il vérifie si le type correspond à la valeur. Consultez ce lien: http://www.php.net/manual/fr/language.operators.comparison.php – Pijusn
L'opérateur PHP '==' fonctionne vraiment de manière "spéciale". –
Si votre exigence était de commencer à compter à 1 au lieu de 0, il y a une façon vraiment concise d'incrémenter les compteurs qui sont initialement 'null' ou 'undefined':' c = - ~ c // Résultats en 1 pour null/undefined; incrémente si déjà un nombre –