Логические операции обычно используются с Boolean (булевыми/логическими) значениями; в этом случае возвращается Boolean-значение. Однако операции && и реально возвращают значение одного из специфицированных операндов, поэтому, если эти операции используются с не-Boolean-значениями, они могут вернуть не-Boolean значение. Логические операции описаны в следующей таблице.
&&
(Логическое И) Возвращает expr1, если оно может быть конвертировано в false; иначе возвращает expr2. Таким образом, при использовании с Boolean-значениями, && возвращает true, если оба операнда true; иначе возвращает false.
(Логическое ИЛИ) Возвращает expr1, если оно может быть конвертировано в true; иначе возвращает expr2. Таким образом, при использовании с Boolean-значениями, возвращает true, если хотя бы один из операндов true; если оба операнда false, возвращает false.
!
(Логическое НЕ) Возвращает false если её единственный операнд может быть конвертирован в true; иначе возвращает true.
Примерами выражений, которые могут быть конвертированы в false являются такие выражения, которые вычисляются в null, 0, пустую строку ("") или undefined.
Вот примеры операции && (логическое И):
a1=true && true // t && t возвращает true
a2=true && false // t && f возвращает false
a3=false && true // f && t возвращает false
a4=false && (3 == 4) // f && f возвращает false
a5="Cat" && "Dog" // t && t возвращает Dog
a6=false && "Cat" // f && t возвращает false
a7="Cat" && false // t && f возвращает false
Примеры операции (логическое ИЛИ):