Operadores lógicos: || y &&
Los operadores lógicos se suelen utilizar con valores booleanos (valores que devuelven true o false). En el caso de que los valores no sean booleanos, los operadores AND y OR tenderán a convertirlos a booleanos para poder trabajar con ellos.
Operador OR
Cuando el operador || se usa con valores booleanos, devuelve true si cualquiera de las dos expresiones es verdadera. Si ninguna de las expresiones es verdadera, el operador devuelve false.
false || true
//devuelve truetrue || true
//devuelve truefalse || false
//devuelve false
Cuando los valores no son booleanos, el operador OR convierte el valor de su izquierda a booleano para decidir qué hacer y, en caso necesario, también el de la derecha. Así, en el caso de que el valor de la izquierda sea verdadero, lo devuelve. En caso contrario, devuelve el de la derecha.
Por ejemplo, un caso de uso sería si queremos usar una variable que está vacía en algunas ocasiones y en otras no, podemos usar el operador || para ofrecer una alternativa.
1 || 3//devuelve 1
Operador &&
Cuando se usa con valores booleanos, el operador AND devuelve true si ambas expresiones son verdaderas y devuelve false en caso contrario. El operador de la izquierda siempre es evaluado y el operador de la derecha solo es evaluado si el primer operador devuelve true.
true && true
// devuelve truetrue && false
// devuelve false
Cuando no se usa con valores booleanos, el operador AND convierte los valores a booleanos y su funcionamiento es el siguiente: cuando el valor de la izquierda se convierte a falso, devuelve ese valor y, en caso contrario, devuelve el de la derecha.
1 && 3
//devuelve 3
Si te interesa el tema, puedes investigar sobre Evaluación perezosa, un concepto muy relacionado con esto.