This commit is contained in:
Ilya Kantor 2014-10-26 22:10:13 +03:00
parent 06f61d8ce8
commit f301cb744d
2271 changed files with 103162 additions and 0 deletions

View file

@ -0,0 +1,30 @@
Текущее значение текста удобно хранить в замыкании, в локальной переменной `makeBuffer`:
```js
//+ run
function makeBuffer() {
var text = '';
return function(piece) {
if (arguments.length == 0) { // вызов без аргументов
return text;
}
text += piece;
};
};
var buffer = makeBuffer();
// добавить значения к буферу
buffer('Замыкания');
buffer(' Использовать');
buffer(' Нужно!');
alert( buffer() ); // 'Замыкания Использовать Нужно!'
var buffer2 = makeBuffer();
buffer2(0); buffer2(1); buffer2(0);
alert( buffer2() ); // '010'
```
Начальное значение `text = ''` -- пустая строка. Поэтому операция `text += piece` прибавляет `piece` к строке, автоматически преобразуя его к строковому типу, как и требовалось в условии.

View file

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