function makeBuffer() {
var text = '';
return function(piece) {
if (arguments.length == 0) { // вызов без аргументов
return text;
}
text += piece;
};
};
var buffer = makeBuffer();
// добавить значения к буферу
buffer('Замыкания');
buffer(' Использовать');
buffer(' Нужно!');
alert( buffer() ); // 'Замыкания Использовать Нужно!'
как buffer стала функцией ? если мы в переменную возвращаем функцию она становится функцией ? Если да, то это fynction expression ?
В переменную buffer записано значение которое вернется из функции makeBuffer, а из функции makeBuffer возвращается функция. И, да, это замыкание.
А еще этот пример можно записать так:
var buffer = function() {
var text = '';
return function(piece) {
if (arguments.length == 0) { // вызов без аргументов
return text;
}
text += piece;
}
}();
// добавить значения к буферу
buffer('Замыкания');
buffer(' Использовать');
buffer(' Нужно!');
alert(buffer()); // 'Замыкания Использовать Нужно!'
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости