Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.01.2021, 22:04
Новичок на форуме
Отправить личное сообщение для Ganjabuss Посмотреть профиль Найти все сообщения от Ganjabuss
 
Регистрация: 16.01.2021
Сообщений: 2

Почему 6 раз срабатывает 6 строка ?
Приветствую уважаемые гуру
Помогите постичь дзен
Такой код если запускать локально выводит дичь (см. ниже)
В местной песочнице отрабатывает как надо.
Собственно вопрос. Почему 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
Изображения:
Тип файла: jpg test.jpg (13.8 Кб, 1 просмотров)
Вложения:
Тип файла: txt test.txt (730 байт, 0 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 16.01.2021, 22:45
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Потому что исполнение последовательное, флаг глобальный, и использованы if вместо if-else.
После вызова AddN() исполнение не останавливается. Функция вызывет себя рекурсивно, после чего продолжает исполнение проверяя следующий if. И так 6 раз.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 16.01.2021, 22:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Ganjabuss
Почему 6 раз выполняется "6 ? 6"
потому что 6 раз была запущена функция Tick.
Tick -> Add1 -> Add2 -> Add3 -> Add4 -> Add5
Tick вызвал консоль при флаге 1 и 6
Add1 вызвал консоль при флаге 2 и 6
...
Add4 вызвал консоль при флаге 5 и 6
Add5 вызвал консоль при флаге 6
Ответить с цитированием
  #4 (permalink)  
Старый 16.01.2021, 23:06
Новичок на форуме
Отправить личное сообщение для Ganjabuss Посмотреть профиль Найти все сообщения от Ganjabuss
 
Регистрация: 16.01.2021
Сообщений: 2

О .....
Спасибо большое !
Осознал ! =))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему в таком слайдере кнопка вправо работает через раз dengk Общие вопросы Javascript 2 29.01.2020 21:04
peerConnection addTrack не срабатывает второй раз serrrgggeee Общие вопросы Javascript 0 07.10.2019 09:13
Функция при нажатии срабатывает один раз и больше не работает notOldFagFromRussia Общие вопросы Javascript 3 08.11.2018 19:17
Переход по локальной ссылке срабатывает только один раз gnplsk Events/DOM/Window 1 09.07.2016 18:50
Почему не срабатывает innerHTML? БВИ Internet Explorer 1 02.01.2009 19:00