#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 В итоге выполнились все функции, следовательно вывелись все числа.
Комментариев нет:
Отправить комментарий