Я не понимаю, как &&
, ||
и !
работают ... как с bools, так и с другими типами данных. Как вы их используете?Логические операторы в JavaScript - как вы их используете?
ответ
Все значения в Javascript являются либо «правдивыми», либо «фальшивыми».
a && b
вычисляет первый операнд falsya || b
вычисляет первый операнд truthy
Оба оператора не будет оценивать любые операнды после одного возвращения.
Если все операнды не совпадают, он будет оцениваться последним.
!a
вычисляетtrue
еслиa
является falsy иfalse
еслиa
является truthy.
Все значения являются правдивым, за исключением следующих:
false
0
NaN
""
null
undefined
Если вы хотите проверить, что как двух условий truthy затем использовать & &:
if (isX && isY)
{
// Do something.
}
Если вы хотите проверить, что один или оба двух условий являются правдивыми, то используют ||:
if (isX || isY)
{
// Do something.
}
!
инвертирует логическое значение (истинное значение становится ложным и наоборот).
Как насчет 'document.write (" Cat "||" Dog ")'? – DarkLightA
@DarkLightA: Я бы посоветовал вам не писать такой код! Он вызывает неявные преобразования, и это смутит всех. –
Хорошо, это было в MDC: D – DarkLightA
Он должен указывать «Все * значения * являются правдивыми ...», так как значение «undefined» является значением, но есть также переменная «undefined», которая имеет это значение, по умолчанию. Кроме того, «NaN» не равно ни к чему, даже к самому себе. –
@Ivo: 1: Исправлено. 2: Это не имеет значения; '! NaN' является' истинным', поэтому 'NaN' является ложным. – SLaks
Еще NaN == NaN является ложным. Таким образом, это все-таки особый случай из приведенного выше списка, можно подумать, что NaN работает как любое другое значение фальши. –