Не перезаписываете переменную? - PullRequest
0 голосов
/ 11 декабря 2011

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

function counter() {
    for(var i = 0; i < elements.length; i++) {
        counter = i;
    }
    alert("counter has counted");
}

, но она работает только в первый раз!Во второй раз, когда вызывается функция, она больше не работает, и предупреждение даже не отображается, поэтому я предполагаю, что процесс прерывается в цикле for.Кто-нибудь знает причину?

Ответы [ 2 ]

5 голосов
/ 11 декабря 2011

Не следует использовать одно и то же имя (counter) для переменной, в которой хранится счетчик, и для вашей функции.

Строка counter = i; перезаписывает ссылку на вашу функцию.В следующий раз, когда вы попытаетесь вызвать counter(), он не будет работать, потому что counter больше не является функцией.

Попробуйте вместо этого:

function update_counter() {
    for(var i = 0; i < elements.length; i++) {
        counter = i;
    }
    alert("counter has counted");
}
0 голосов
/ 11 декабря 2011

Это из-за строки

counter = i

, которая также является именем вашей функции.

Следовательно, при следующем вызове counter () счетчик фактически будет установлен с целым.

...