Как добиться такого же поведения при другой реализации?

220
23 января 2018, 13:35

var makeBuffer = (function () { 
    var box = []; 
 
    function buffer (item) { 
        if (item) { 
            box.push(item) 
        } else { 
            return box 
        } 
    } 
 
    buffer.clean = function () { 
        box = []; 
    } 
 
    return buffer; 
})(); 
 
 
makeBuffer(10); 
makeBuffer(15); 
console.log(makeBuffer()); 
makeBuffer.clean(); 
console.log(makeBuffer());

Как добиться такого поведения при использовании "FunctionDeclaration" ? Что бы функцию можно использовать и до ее обьявления

function имя(параметры) {
 ...
}
Answer 1

Рецепт прост: берёте костыль подходящего размера, приматываете изолентой, и можно начинать крутить педали.

makeBuffer(10); 
makeBuffer(15); 
console.log(makeBuffer()); 
makeBuffer.clean(); 
console.log(makeBuffer()); 
 
 
function makeBuffer(item) { 
    if(!makeBuffer.box) { 
      makeBuffer.box = []; 
      makeBuffer.clean = function () { 
          this.box = []; 
      } 
    } 
     
    if (item) { 
        makeBuffer.box.push(item) 
    } else { 
        return makeBuffer.box 
    } 
}

READ ALSO
Как получить значение атрибута width в img?

Как получить значение атрибута width в img?

Я пытаюсь сравнить значение атрибута ширины у картинки, но получаю в консоль только undefinedКак мне получить значение атрибута ширины у картинки...

235
Выпадающий список, даты на JavaScript

Выпадающий список, даты на JavaScript

Пытаюсь на JS сделать список с выпадающими датами (смвложение)

149
Создание и уничтожение кнопки в JS без HTML

Создание и уничтожение кнопки в JS без HTML

Есть задача создать кнопку непосредственно в JS, без участия HTML и повесить ее появление и уничтожение в зависимость от условийСобственно,...

160
Как сделать поиск пользователей по мере набора его имени

Как сделать поиск пользователей по мере набора его имени

Всем приветК сожалению я не знаю как объяснить грамотно и правильно то, что мне нужно, но попытаюсь

202