29 votes

Pourquoi est--1 > null, true en php

En PHP (5.3.14), le code suivant renvoie true:

-1 > null

Exactement le même code en JavaScript renvoie false. Quelle est la raison derrière cela ?

38voto

Qantas 94 Heavy Points 8095

PHP convertit les deux côtés pour les booléens, lorsqu'il n'est nulle sur un côté.

Le manuel PHP section sur les Opérateurs de Comparaison , lorsque le type de l'opérande 1 est "bool ou nul", ou vice versa, il "convertit les deux côtés de bool, FALSE < TRUE".

Un nombre qui a une valeur non nulle est considérée comme truthy, si ce n'est pas intuitive.


En JavaScript, la comparaison est défini différemment de sorte qu'ils sont par rapport numériquement (null -> 0).

ECMA-262, le fonctionnaire JavaScript spécification, stipule que:

3. Si ce n'est le cas que les deux Type(px) est une Chaîne et le Type(py) est une Chaîne, puis

un. Laissez nx être le résultat de l'appel ToNumber(px). Parce que px et py sont des valeurs primitives ordre d'évaluation n'est pas important.
b. Laissez ny être le résultat de l'appel ToNumber(py).

PHP est bien connu pour être assez incohérent de contrainte de type système - PHP: un fractal de la mauvaise conception met en évidence quelques autres questions que PHP souffre de. (Oserais-je dire, personnellement, je pense que c'est pire que de JavaScript, un langage aussi connu pour sournois forçages de type.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X