Javascript.RU

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

Функции, счетчик, нуб.
Здравствуйте, я совсем недавно начал осваивать js и у меня появилась пара вопросов по функциям.
1. То, что cntr() возвращает [Function] мне понятно, но почему counter() возвращает правильный результат (в данном случае счетчик) при том, что "counter = cntr()"?
2. Чем отличается cntr()() от counter()?
const cntr = () =>{
	let i = 0;
	return (() => {
		i++;
		return i;
    })
}
console.log(cntr()); //[Function]
console.log(cntr()()); //1
console.log(cntr()()); //1

const counter = cntr();

console.log(counter()); //1
console.log(counter()); //2
console.log(counter()); //3
console.log(counter()); //4
Ответить с цитированием
  #2 (permalink)  
Старый 11.02.2019, 10:20
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

Сообщение от ndrwKrpnk
почему counter() возвращает правильный результат (в данном случае счетчик) при том, что "counter = cntr()"?
counter !== cntr()
В переменной counter содержится анонимная функция (замыкание), которую вернула функция cntr.
Вызов функции, которая сохранена в переменной counter не вызовет повторно функцию cntr.

Сообщение от ndrwKrpnk
Чем отличается cntr()() от counter()
В первом случае вы постоянно будете создавать новый счетчик и инкрементировать его, во втором будете инкрементировать уже созданный счетчик.


Надеюсь понятно объяснил.
Ответить с цитированием
  #3 (permalink)  
Старый 11.02.2019, 10:27
Новичок на форуме
Отправить личное сообщение для ndrwKrpnk Посмотреть профиль Найти все сообщения от ndrwKrpnk
 
Регистрация: 11.02.2019
Сообщений: 2

Спасибо большое. Фраза "counter не вызовет повторно функцию cntr" все поставила на свои места.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли так использовать callback функции? Denwf Node.JS 2 14.03.2017 10:20
Изменение прототипа функции tsigel Общие вопросы Javascript 11 15.05.2014 01:03
Добавление функции внутрь другой функции Lion_astana jQuery 9 28.12.2013 14:33
Установить имя конструктора Андрей Параничев Общие вопросы Javascript 8 17.11.2011 10:09
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21