Страницы

Поиск по вопросам

среда, 1 января 2020 г.

Логические операторы || vs &&

#javascript


Подскажите, пожалуйста, почему выводит в консоль 1,2,3,4?
В моем понимании, должны быть только 3 и 4 (первым срабатывает && где выполняется
последний false(3). Далее на проверке || срабатывает последний true(4)). Что не так?
Спасибо!!



function zfalse(arg) {
  console.log(arg);
  return false;
}

function ztrue(arg) {
  console.log(arg);
  return true;
}

zfalse(1) || ztrue(2) && zfalse(3) || ztrue(4)



    


Ответы

Ответ 1



Выполняется все слева направо, если расставить скобки будет понятнее: zfalse(1) || (ztrue(2) && zfalse(3)) || ztrue(4) Условия разделенные 'ИЛИ'(||) будут проверяться, пока хотя бы одно из них не вернет true Условия разделенные 'И'(&&) будут проверяться, пока хотя бы одно из них не вернет false Т.е. zfalse(1) - печатает 1, возвращает false, поэтому идет следующая проверка ztrue(2) && zfalse(3) ztrue(2) - печатает 2, возвращает true, поэтому идет следующая проверка zfalse(3) - печатает 3, возвращает false, общее значение выражения - false ztrue(4) - печатает 4, возвращает true, общее значение выражения - true В итоге выполнились все функции, следовательно вывелись все числа.

Комментариев нет:

Отправить комментарий