en.javascript.info/1-js/5-functions-closures/5-closures-usage/2-stringbuffer/task.md
Ilya Kantor 87bf53d076 update
2014-11-16 01:40:20 +03:00

43 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Функция - строковый буфер
[importance 5]
В некоторых языках программирования существует объект "строковый буфер", который аккумулирует внутри себя значения. Его функционал состоит из двух возможностей:
<ol>
<li>Добавить значение в буфер.</li>
<li>Получить текущее содержимое.</li>
</ol>
**Задача -- реализовать строковый буфер на функциях в JavaScript, со следующим синтаксисом:**
<ul>
<li>Создание объекта: `var buffer = makeBuffer();`.</li>
<li>Вызов `makeBuffer` должен возвращать такую функцию `buffer`, которая при вызове `buffer(value)` добавляет значение в некоторое внутреннее хранилище, а при вызове без аргументов `buffer()` -- возвращает его.</li>
</ul>
Вот пример работы:
```js
function makeBuffer() { /* ваш код */ }
var buffer = makeBuffer();
// добавить значения к буферу
buffer('Замыкания');
buffer(' Использовать');
buffer(' Нужно!');
// получить текущее значение
alert( buffer() ); // Замыкания Использовать Нужно!
```
Буфер должен преобразовывать все данные к строковому типу:
```js
var buffer = makeBuffer();
buffer(0); buffer(1); buffer(0);
alert( buffer() ); // '010'
```
Решение не должно использовать глобальные переменные.