Не пойму почему если писать просто alert(count++); - функция выводит 0, 1. А если писать так как закомментировано -выводит 1, 2.
и не пойму: для запуска Функции обязательно записывать её в переменную? Почему нельзя написать просто makeCounter()? Если написать просто makeCounter() - то в консоль ничего не выводит. Хотя это стандартный вызов Функций.
1. функция makeCounter возвращает анонимную функцию, в которой и происходит вызов alert(т.е. ты записываешь эту функцию в переменную затем вызываешь). Если хочешь чтоб работало без присваивания напиши: function makeCounter(){ static let count = 0; alert(count++); } 2. Почему count++ затем alert(count) выводит 1; Потому что count++ аналогично count = count + 1. Операция ++ это операция пост-инкремента(операция выполняется до выполнения этого инкремента) есть ещё префикс-инкремента(возвращает значение уже измененной переменной). т.е. если написать alert(count++) выведет 0 если alert(++count) будет 1.
1) насчёт вызова функции - получается я не могу вызывать её просто написав makeCounter() - потому что в ней есть анонимная функция, поэтому? 2) спасибо, но это я знаю, я не понял почему если записать alert(count++) выведет 0 А если: count++ alert(count) - то 1
Кирилл Грушников
Знаток
(457)
Союз Здравых Сил, 1) просто написав makeCounter() нет, но для вызова функции внутри makeCounter можешь написать makeCounter()(). 2) потому что операция присваивания в alert(count++) срабатывает после alert. Во втором случае сначала переменная увеличивается затем выводится, поэтому 1.
А если писать так как закомментировано -выводит 1, 2.
и не пойму: для запуска Функции обязательно записывать её в переменную? Почему нельзя написать просто makeCounter()? Если написать просто makeCounter() - то в консоль ничего не выводит. Хотя это стандартный вызов Функций.