Javascript.RU

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

Что значит ета скобка у функции??
Смотрю видео урок про замыкания.. Вот увидел такую фичу

var counter = (function() {
    var count = 0;
    return function() {
        return count++;
    }
}());

console.log(counter());

console.log(counter());


Меня интересуют последнии круглые скобки... Что они значат?? Я когда их убераю, и пишу console.log(counter()());
То подсчет не идет.
Объясните пожалуйста логику js. Почему тааак?
Ответить с цитированием
  #2 (permalink)  
Старый 03.09.2019, 09:29
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от AnotherPerson
counter()
Это вызов функции... Ее имя/идентификатор counter.
Это делается не только в JS... Это делается во многих ЯП.
Ответить с цитированием
  #3 (permalink)  
Старый 03.09.2019, 09:32
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Одни скобки явно лишние...
Будет работать и так
var counter = function() {
    var count = 0;
    return function() {
        return count++;
    }
}();
alert(counter());
alert(counter());
Ответить с цитированием
  #4 (permalink)  
Старый 03.09.2019, 09:34
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

AnotherPerson, может ты пример не правильно переписал?
Возможно в оригинале было так
var counter = (function() {
    var count = 0;
    return function() {
        return count++;
    }
})();
alert(counter());
alert(counter());
Ответить с цитированием
  #5 (permalink)  
Старый 03.09.2019, 09:36
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

ksa, он наверное вот так пробует

var counter = function() {
    var count = 0;
    return function() {
        return count++;
    }
};

console.log(counter()());

console.log(counter()());


функция внутри каждый раз выполняется, счетчик не идет
Ответить с цитированием
  #6 (permalink)  
Старый 03.09.2019, 09:46
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от j0hnik
он наверное вот так пробует
Эва...
Тогда
Сообщение от AnotherPerson
Что они значат?
Делается некий аналог вот такого
var count = 0;
var counter = function() {
	return count++;
}
alert(counter());
alert(counter());

Но так будет глобальная переменная count...
Во избежании этого выполняется безымянная функция, внутри которой создается еще одна функция... Которая "видит" переменную count. И так получается, что "видит" count только она...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как собрать проект и что это значит? VLebedev Сборка проекта, утилиты 9 04.07.2016 19:04
Что значит эта строка? Urukhay Общие вопросы Javascript 1 07.07.2014 18:36
Мотоциклисты есть? l-liava-l Оффтопик 13 04.07.2014 13:35
Что значит эта ошибка? mksim Элементы интерфейса 4 02.12.2013 12:48
Что за оператор $ и растолкуйте немного тест функции raykom2010 Javascript под браузер 20 20.11.2013 14:25