O && e lógico || operadores em JavaScript

Eu queria mais esclarecimentos sobre alguma coisa.

Considere isto:

var a = 42;
var b = "abc";
var c = null;

a || b;     // 42 
a && b;     // "abc"
c || b;     // "abc" 
c && b;     // null 

Eu sei que para o|| operador, se o teste no primeiro operando for verdadeiro, o|| A expressão resulta no valor do primeiro operando (a ou c). Se o teste for falso, o|| A expressão resulta no valor do segundo operando (b).

Inversamente, para o&& operador, se o teste for verdadeiro, o&& A expressão resulta no valor do segundo operando (b). Se o teste for falso, o&& A expressão resulta no valor do primeiro operando (a ou c)

Então, o que exatamente está acontecendo quando você usa o&& e|| operadores com valores de encadeamento, como:

if(a && b && c && d && e){
    //do something;
}

if(a || b || c || d || e){
    //do something
}

O que exatamente está acontecendo quando você encadeia os valores? Porque no primeiro exemplo (envolvendo o&& operador) se a for verdadeiro, então b deve ser retornado, certo? então c ou d são levados em consideração nesse ponto?

questionAnswers(2)

yourAnswerToTheQuestion