34 votes

Pourquoi est-il faux de 1 euro ?

Dans une console de navigateur, l'entrée évalue à . Saisie évalue à .

Je suppose que c'est en raison de la façon dont la déclaration est évaluée:

``

Devient

``

qui évalue à

``

qui est `` .

Est-ce exact? Si ce n'est pas le cas, quelle est la véritable raison de ce comportement?

42voto

aga Points 4221

Oui, vous avez tout à fait raison. Là, vous avez deux contrôles d'égalité, qui ont la même priorité de l'opérateur. D'abord on évalue d'abord, puis son résultat s'applique à la prochaine contrôle d'égalité.

1===1===1est le même que (1===1)===1 qui true===1 qui false, car ici, vous vérifiez par des valeurs ET de leurs types. 1==1==1 entraînera true, car il vérifie l'égalité par des valeurs seulement, alors 1==1==1 égal à (1==1)==1 égal à true==1 égal à true.

20voto

David Points 65209

L'opérateur ne se contente pas de tester l'égalité, mais aussi d'enfaire l'égalité. Puisqu'un entier n'est pas un booléen, c'est faux.

Comparer:

Exemple.

3voto

C M Points 503

Comportement correct. Depuis

Mais

Il y a deux raisons à cela :

  1. vrai est un type booléen où 1 est entier
  2. simplement, 1 n'est pas égal à vrai.

ainsi

2voto

Pratik Points 76

le comportement est correct.

Son parce que ' implique l'appariement sur le type et la valeur. vrai 1 ne correspond pas sur le type

-2voto

user2986342 Points 1

si 1 '1 '1 alors il sera vrai

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