Показать сообщение отдельно
  #1 (permalink)  
Старый 15.04.2019, 18:36
Аспирант
Отправить личное сообщение для Иса Мирзоев Посмотреть профиль Найти все сообщения от Иса Мирзоев
 
Регистрация: 15.04.2019
Сообщений: 72

Вопрос по замыканию
Приветствую. Извиняюсь, если тема уже была (что наверняка, только я найти/понять не смог). Гугл мне тоже бегло не помог, обычно я всегда все находил сам. Пишу впервые, так как сам понимаю занятость людей. Вопрос такой: как засунуть в глобальную переменную локальную функцию, если в родительской функции есть НЕСКОЛЬКО дочерних равноправных функций?
Простой пример (сорян, вашим автокодом так и не воткнул, как пользоваться).

Вот пример.

function counter(){
            a = 5;
            function x(){
                a++; 
                console.log(a);
            }
             function y(){
                a --; 
                console.log(a); 
            }
        }
        counter()




Мне нужно трижды запустить функцию y(). Я знаю, как это сделать локально (вот так).

function counter(){
            a = 5;
            function x(){
                a++; 
                console.log(a);
            }
             function y(){
                a--;  
                console.log(a); 
            }
           y();
           y();
           y();
        }
counter()



Знаю, как вставить в переменную ЕДИНСТВЕННУЮ функцию из родительской функции. Вот так:

function counter(){
            a = 5;
           return function y(){
                a--; 
                console.log(a);
            }
        }
        
var value = counter();
value();
value();
value();



Но этот трюк работает лишь, если функция одна единственная в родительской функции. А у меня в верхнем самом примере две функции (х и у) в родительской. Собственно, вопрос озвучил - нужна глобальная переменная, содержащая функцию y(). Подскажите, пожалуйста. Баньте меня, если я совсем налажал. Полтора месяца изучаю программирование самостоятельно. Простые вопросы быстро гуглятся, а вот более специфические - нет. Спасибо всем откликнувшимся. Сорян за длиннопост. Надеюсь, показал, что сам частично смог разобраться.

Последний раз редактировалось Иса Мирзоев, 15.04.2019 в 23:12.
Ответить с цитированием