пример с замыканием
Здравствуйте!
Вкуриваю пример про строковый буфер. 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, время: 07:16. |