Что значит ета скобка у функции??
Смотрю видео урок про замыкания.. Вот увидел такую фичу
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, время: 16:57. |