Подскажите, пожалуйста, почему выводит в консоль 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)
Выполняется все слева направо, если расставить скобки будет понятнее:
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, общее значение выражения - falseztrue(4)
- печатает 4, возвращает true, общее значение выражения - trueВ итоге выполнились все функции, следовательно вывелись все числа.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не получается использовать Яндекс картыПроблему вы уже прочитали в заголовке, при том что я просто скопировал код из примеру, и он уже не работает