Si quieres probar múltiples condiciones sin escribir declaraciones if...elseanidados, los operadores lógicos (en-US)") pueden ayudarte. Cuando se usa en condiciones, los primeros dos hacen lo siguiente:
- && — AND; le permite encadenar dos o más expresiones para que todas ellas se tengan que evaluar individualmente true para que expresión entera retorne true.
- || — OR; le permite encadenar dos o más expresiones para que una o más de ellas se tengan que evaluar individualmente true para que expresión entera retorne true.
Para poner un ejemplo de AND, el anterior código puede ser reescrito de esta manera:
.png)
Así que por ejemplo, el primer bloque solo se ejecutará si la variable eleccion === 'soleado' y temperatura < 86 devuelven un valor verdadero o true.
Observemos un ejemplo rápido del operador OR:
.png)
El último tipo de operador lógico, NOT, es expresado con el operador !, puede ser usado para negar una expresión. Vamos a combinarlo con el operador OR en el siguiente ejemplo:
.png)
En el anterior ejemplo, si las declaraciones del operador OR retornan un valor true, el operador NOT negará toda la expresión dentro de los paréntesis, por lo tanto retornará un valor false.
Puedes combinar los operadores que quieras dentro de las sentencias, en cualquier estructura. El siguiente ejemplo ejecuta el código dentro del condicional solo si ambas sentencias OR devuelven verdadero, lo que significa que la instrucción general AND devolverá verdadero:
.png)
Un error común cuando se utiliza el operador OR en las declaraciones condicionales es intentar verificar el valor de la variable una sola vez, y luego darle una lista de valores que podrían retornar verdadero separados por operadores ||. Por ejemplo:
.png)
En este caso la condición if(...) siempre evaluará a verdadero siendo que 7 (u otro valor que no sea 0) siempre será verdadero. Esta condición lo que realmente está diciendo es que "if x es igual a 5, o 7 es verdadero— lo cual siempre es". ¡Esto no es lógicamente lo que queremos! Para hacer que esto funcione, tenemos que especificar una prueba completa para cada lado del operador OR:
.png)