¿Por qué es 1===1===1 falso?
En una consola del navegador, introducir 1===1
da como resultado true
. Entrar 1===1===1
da como resultado false
.
Asumo que esto se debe a la forma en que se evalúa la declaración:
1 === 1 === 1
Se convierte en
(1 === 1) === 1
Que evalúa a
true === 1
Que es false
.
Es esto correcto? Si no, ¿cuál es la verdadera razón de este comportamiento?
5 answers
Sí, tienes toda la razón. Aquí tiene dos comprobaciones de igualdad, que tienen la misma precedencia de operador. Primero se evalúa primero, luego su resultado se aplica a la siguiente comprobación de igualdad.
1===1===1
es lo mismo que (1===1)===1
que es true===1
que es false
, porque aquí se comprueba por valores y sus tipos. 1==1==1
resultará en true
, porque comprueba la igualdad por valores, por lo que 1==1==1
igual a (1==1)==1
igual a true==1
igual a true
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-13 13:59:44
El operador ===
no solo prueba la igualdad, sino que también escribe la igualdad. Dado que un entero no es un booleano, true === 1
es false.
Comparar:
true == 1; // true
true === 1; // false
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-05 11:55:49
Comportamiento correcto. Desde
1===1 // value is true
Pero
true===1 // it's false
Hay dos razones para esto:
- true es un tipo booleano donde 1 es entero
- simplemente, 1 no es igual a verdadero.
So
1===1===1 // false
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-13 21:19:03
El comportamiento que mencionaste es correcto.
Es porque ===
implica la coincidencia basada en el tipo y el valor.
true === 1
no coincide con el tipo, pero true == 1
coincide con el valor.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-24 06:28:54
If 1==1==1 entonces será verdad
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-15 02:53:43