пример с замыканием
Здравствуйте!
Вкуриваю пример про строковый буфер.
function makeBuffer() {
var text = '';
return function(piece) {
if (piece === undefined) {
return text;
}
text += piece;
};
};
var buffer = makeBuffer();
// добавить значения к буферу
buffer('Замыкания');
buffer(' Использовать');
buffer(' Нужно!');
alert( buffer() ); // 'Замыкания Использовать Нужно!'
var buffer2 = makeBuffer();
buffer2(0); buffer2(1); buffer2(0);
alert( buffer2() ); // '010'
Поясните два момента 1. почему мы присваиваем var buffer = makeBuffer(); почему нельзя просто вызывать makeBuffer('параметр'), не используя переменную buffer. 2. как передается параметр в функцию? функция объявлена без параметра function makeBuffer() в скобках пусто, а вызов идет с параметром buffer('Замыкания'); Пробовал вызвать makeBuffer('значение') не работает. |
function a(){
return function(){ return 1 }
}
alert(typeof a());
alert(a()());
|
разобрался сам, потом прочитал ваши комменты.
Спасибо. |
Пару дней назад задавал этот же вопрос :)
Самому не понятна логика работы скрипта, хотя сама суть работы ясна. Я привык что функция должна явно вызываться в скрипте. makeBuffer(); И если такого вызова нет, то внутренняя часть функции остается недоступной. Вот эта строчка: var buffer = makeBuffer(); сбивала с толку Это присвоение результата выполнения функции makeBuffer(), а не присвоение функции makeBuffer(). |
Цитата:
Если бы было бы вот так: var buffer = makeBuffer; |
Цитата:
|
Цитата:
а так бы тоже - не припомнил бы ( |
А где практически можно было бы использовать замыкание?
Может есть у кого примеры? Выложите пжалуйста :) |
Цитата:
|
| Часовой пояс GMT +3, время: 05:37. |