不覆盖变量?

时间:2011-12-10 20:58:04

标签: javascript for-loop counter

我正在尝试计算数组中的元素,并且每次添加元素时都必须更新数字。我正在尝试使用以下函数执行此操作:

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

但它只在第一次有效!第二次调用该函数它不再起作用,警报甚至没有出现,所以我猜这个过程在for循环中被中断了。谁知道原因?

2 个答案:

答案 0 :(得分:5)

对于存储计数和函数的变量,不应使用相同的名称(counter)。

counter = i;会覆盖对函数的引用。下次您尝试拨打counter()时,它将无效,因为counter不再是一个功能。

请改为尝试:

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

答案 1 :(得分:0)

这是因为行

counter = i

这也是你的功能名称。

因此,下次调用counter()时,计数器实际上是用整数设置的。