Я не понимаю, как работают &&, || и !... как с bools, так и с другими типами данных. Как вы их используете?
Логические операторы в JavaScript - как вы их используете?
Ответ 1
Все значения в Javascript являются "правдивыми" или "ложными".
-  a && bоценивает первый ложный операнд
-  a || ba || bоценивает первый правдивый операнд
 Оба оператора не будут оценивать операнды после возвращения. 
 Если все операнды не совпадают, он будет оцениваться последним.
-  !aоценивает значениеtrueеслиaявляется ложным иfalseеслиaявляется правдивым.
Все значения являются правдивыми, кроме следующих, которые являются ложными:
-  false
-  +0
-  -0
-  NaN
-  ""
-  null
-  undefined
-  document.all
Ответ 2
Если вы хотите проверить, что оба условия являются правдивыми, используйте & &:
if (isX && isY)
{
     // Do something.
}
Если вы хотите проверить, что одно или оба из двух условий являются правдивыми, используйте ||:
if (isX || isY)
{
     // Do something.
}
 ! инвертирует логическое значение (истинное значение становится ложным и наоборот).
