- No hay diferencia (técnica), ni hay en Java que yo sepa.
- En PHP, no use ninguno de estos.
Le recomiendo que use siempre los operadores de comparación estrictos ===
y, !==
si es posible. Sabrá cuándo realmente necesita operadores de comparación sueltos.
Malentendidos
Creo que puede estar confundido acerca de un par de cosas:
- operadores de cortocircuito
- orden de evaluación
- precedencia del operador
Acabo de encontrar que el manual de PHP dice: "PHP verifica cada condición en orden de izquierda a derecha"
No,
- PHP Manual no no dicen eso, es un comentario.
- PHP no hace eso.
PHP evalúa las condiciones de izquierda a derecha, pero se detiene una vez que se conoce el resultado:
expr1 && expr2
Si expr1
a evalúa false
, expr2
serán no ser evaluados. Esto se llama cortocircuito y no parece estar muy bien documentado : no pude encontrar ninguna otra nota oficial sobre el asunto, excepto el comentario en el Ejemplo # 1. Sin embargo, es una característica bien conocida .
Falacias
Estoy acostumbrado a Java y, por lo tanto, siempre pienso que las condiciones se interpretan de izquierda a derecha, es decir, hay una diferencia vital en nulo! = $ Obj y $ obj! = Nulo
PHP verifica cada condición en orden de izquierda a derecha
Ergo: se puede aplicar la misma "mejor práctica"
Ergo: nada , no sequitur. La conclusión no se sigue de la premisa. Usar constant == $variable
o $variable == constant
no está conectado a cortocircuito , orden de evaluación o precedencia del operador .
Comportamiento indefinido
Ambos operandos de !=
son siempre evaluados. En el caso de PHP, el orden de evaluación (que aquí es irrelevante) en realidad no está especificado (como ausente de la documentación).