Мастер-классы по Javascript Екатеринбург Ростов-на-Дону Москва Узнать больше...
Содержание (скрыть) Содержание (показать)

Создать счетчик со статической переменной

Создайте счетчик, который вместо замыкания использует статическую переменную для хранения currentCount.

Код счетчика через замыкание:

function makeCounter() {
  var currentCount = 0; // сделать статической переменной счетчика
    
  return function() {
    currentCount++;
    return currentCount;
  };
}

Счетчики не должны изменять своё поведение, т.е. каждый — сам по себе:

var c1 = makeCounter();
var c2 = makeCounter();

alert( c1() ); // 1
alert( c2() ); // 1
alert( c1() ); // 2

Решение
Решение

Переписанный счетчик:

function makeCounter() {
  return function() {
    if (!arguments.callee.currentCount) {
      arguments.callee.currentCount = 0;
    }

    return ++arguments.callee.currentCount;
  };
};

var c1 = makeCounter();
var c2 = makeCounter();

alert( c1() ); // 1
alert( c2() ); // 1
alert( c1() ); // 2

Побочный эффект — текущее значение счетчика теперь доступно снаружи через свойство функции:

var counter = makeCounter();

counter();
alert( counter.currentCount ); // 1

#356
Наверх

Реклама

Нашли опечатку?

Нашли опечатку на сайте? Что-то кажется странным?
Выделите соответствующий текст и нажмите Ctrl+Enter!

Последние Комментарии

Помоги другим!

Помоги другим узнать о хорошей статье!