Ответ 1
Все значения в Javascript являются "правдивыми" или "ложными".
-
a && b
оценивает первый ложный операнд -
a || b
a || b
оценивает первый правдивый операнд
Оба оператора не будут оценивать операнды после возвращения.
Если все операнды не совпадают, он будет оцениваться последним.
-
!a
оценивает значениеtrue
еслиa
является ложным иfalse
еслиa
является правдивым.
Все значения являются правдивыми, кроме следующих, которые являются ложными:
-
false
-
+0
-
-0
-
NaN
-
""
-
null
-
undefined
-
document.all