Почему 6 раз срабатывает 6 строка ?
Вложений: 2
Приветствую уважаемые гуру
Помогите постичь дзен Такой код если запускать локально выводит дичь (см. ниже) В местной песочнице отрабатывает как надо. Собственно вопрос. Почему 6 раз выполняется "6 ? 6" Пробовал в Opera 72 & FireFox 84 (Win10) var Flag = 0; Tick(); function Tick(){ Flag += 1; console.log("Flag " + Flag ); if ( Flag === 1 ) { console.log("1 ? " + Flag); Add1(); } if ( Flag === 2 ) { console.log("2 ? " + Flag); Add2(); } if ( Flag === 3 ) { console.log("3 ? " + Flag); Add3(); } if ( Flag === 4 ) { console.log("4 ? " + Flag); Add4(); } if ( Flag === 5 ) { console.log("5 ? " + Flag); Add5(); } if ( Flag === 6 ) { console.log("6 ? " + Flag); } } function Add1(){ Tick(); } function Add2(){ Tick(); } function Add3(){ Tick(); } function Add4(){ Tick(); } function Add5(){ Tick(); } Вывод в консоль: > Flag 1 > 1 ? 1 > Flag 2 > 2 ? 2 > Flag 3 > 3 ? 3 > Flag 4 > 4 ? 4 > Flag 5 > 5 ? 5 > Flag 6 > 6 ? 6 > 6 ? 6 > 6 ? 6 > 6 ? 6 > 6 ? 6 > 6 ? 6 |
Потому что исполнение последовательное, флаг глобальный, и использованы if вместо if-else.
После вызова AddN() исполнение не останавливается. Функция вызывет себя рекурсивно, после чего продолжает исполнение проверяя следующий if. И так 6 раз. |
Цитата:
Tick -> Add1 -> Add2 -> Add3 -> Add4 -> Add5 Tick вызвал консоль при флаге 1 и 6 Add1 вызвал консоль при флаге 2 и 6 ... Add4 вызвал консоль при флаге 5 и 6 Add5 вызвал консоль при флаге 6 |
О .....
Спасибо большое ! Осознал ! =)) |
Часовой пояс GMT +3, время: 06:39. |