Javascript.RU

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

Замыкание - не понятен return.
При использовании "замыкания" в js в консоль ничего не выводится. Вроде как return завершает выполнение функции, тогда как реализовать замыкание???
<!DOCTYPE html>
<html>
<head>
    <title>Мой сайт</title>
    <meta charset="UTF-8">
    <script src="jsa.js"></script>
</head>
<body>
    
</body>
</html>

function get() {
    var a = 0;
    return function abcv() {
        a++;
    }
    console.log(a);
}

 get();

Везде искал, не могу понять в чем проблема, надеюсь на помощь, заранее спасибо!)

Последний раз редактировалось Auroar, 10.04.2018 в 21:56.
Ответить с цитированием
  #2 (permalink)  
Старый 10.04.2018, 21:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,165

Auroar,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 10.04.2018, 21:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,165

Auroar,
function get() {
 var a = 0;
 return function abcv() {
 a++;
 console.log(a);
 }

 }

 var b = get();
 b();
 b();
Ответить с цитированием
  #4 (permalink)  
Старый 10.04.2018, 22:02
Интересующийся
Отправить личное сообщение для Auroar Посмотреть профиль Найти все сообщения от Auroar
 
Регистрация: 10.04.2018
Сообщений: 10

Принцип замыканий
Спасибо большое) но непонятно почему мы не можем написать console.log(); в function get(){}, ничего не выведется, но почему, почему нужно именно в function abcv(){}? И для чего в конце присваивать функцию переменной?
Ответить с цитированием
  #5 (permalink)  
Старый 10.04.2018, 22:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,165

.
Сообщение от Auroar
почему мы не можем написать console.log(); в function get(){}
после return хоть потоп, функция вернула результат, значит закончила процесс вычислений

Сообщение от Auroar
И для чего в конце присваивать функцию переменной?
чтобы получить function abcv
Ответить с цитированием
  #6 (permalink)  
Старый 11.04.2018, 00:14
Интересующийся
Отправить личное сообщение для Auroar Посмотреть профиль Найти все сообщения от Auroar
 
Регистрация: 10.04.2018
Сообщений: 10

Почти все понял
Первое понял, спасибо), последнее не пойму:
После функции abcv в функции get "a" становится равна 1? Если да - то после повторного вызова функции в начале ее указана что a = 0, то-есть она обнуляться должна, почему этого не происходит?
function get() {
 var a = 0;
 return function abcv() { //Возвращаем 1
 a++;
 console.log(a);
 }
 // a = 1 (по идеи)
 }
 // Теперь a в get() равна 1 (По идеи)
/* ГЛАВНОЕ: Получается когда мы делаем присвоение get() к b мы присваиваем функцию где a = 1, но в начале get() у нас все ровно a присваевается(=) к 0, вот и не пойму. Если при выполнении функции a сразу становится 0. Как оно тогда работает?
 */
var b = get();
 b();
 b();
Ответить с цитированием
  #7 (permalink)  
Старый 11.04.2018, 00:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,165

Сообщение от Auroar
то-есть она обнуляться должна, почему этого не происходит?
функция abcv только использует переменную a, но не создаёт.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery научите пользоваться. Станислав89 Общие вопросы Javascript 10 19.12.2013 21:01
скрипт вставить bb-коды в мою форму ПОМОГИТЕ адаптировать Краса Общие вопросы Javascript 4 13.03.2013 22:33
Помогите разобраться ŞΘLƉiΞR Общие вопросы Javascript 2 28.08.2012 10:57
регулярки: замена ссылки на ютуб Hekumok Общие вопросы Javascript 105 01.08.2012 09:48
Классы в javascript harmony. Mахmахmахimus Оффтопик 4 16.03.2012 10:17