Что значит ета скобка у функции??
Смотрю видео урок про замыкания.. Вот увидел такую фичу
var counter = (function() { var count = 0; return function() { return count++; } }()); console.log(counter()); console.log(counter()); Меня интересуют последнии круглые скобки... Что они значат?? Я когда их убераю, и пишу console.log(counter()()); То подсчет не идет. Объясните пожалуйста логику js. Почему тааак? |
Цитата:
Это делается не только в JS... Это делается во многих ЯП. |
Одни скобки явно лишние...
Будет работать и так var counter = function() { var count = 0; return function() { return count++; } }(); alert(counter()); alert(counter()); |
AnotherPerson, может ты пример не правильно переписал?
Возможно в оригинале было так var counter = (function() { var count = 0; return function() { return count++; } })(); alert(counter()); alert(counter()); |
ksa, он наверное вот так пробует
var counter = function() { var count = 0; return function() { return count++; } }; console.log(counter()()); console.log(counter()()); функция внутри каждый раз выполняется, счетчик не идет |
Цитата:
Тогда Цитата:
var count = 0; var counter = function() { return count++; } alert(counter()); alert(counter()); Но так будет глобальная переменная count... Во избежании этого выполняется безымянная функция, внутри которой создается еще одна функция... Которая "видит" переменную count. И так получается, что "видит" count только она... ;) |
Часовой пояс GMT +3, время: 17:35. |