43 lines
1.8 KiB
Markdown
43 lines
1.8 KiB
Markdown
# Функция - строковый буфер
|
||
|
||
[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'
|
||
```
|
||
|
||
Решение не должно использовать глобальные переменные.
|