javascript - JavaScript 中的循环出错?

标签 javascript iterator

我的代码的多个部分都有与此类似的片段:

function updateScore() {
    var currentPoints=0;
    for (nni=0;nni<currentSession.Questions.length+1;nni++) {
        currentPoints+=currentSession.Questions[nni].Score;
    }
    alert('hi');
    document.getElementById('quiz_score').innerHTML='%'+(currentPoints/currentSession.TotalPoints)*100
}

一切正常......直到循环结束。这种情况在多种情况下都会发生。循环结束后警报甚至不会显示。就像该功能刚刚停止一样...

我还遇到了迭代器(在本例中为 nni)保持全局的问题。基本上,我不能在我的代码中再次使用该变量,因为由于某种原因,如果我更改 nni,它会弄乱 for 循环。我显然没有做正确的事情。我是一个 self 训练的Javascripter(基本上是用谷歌搜索我不知道的东西,我从来没有上过课)。我一定是漏掉了一些关于 for 循环的东西。

如果可以的话谢谢!

最佳答案

您的 nni 变量是全局变量,因为它不是使用 var 关键字声明的:

 function updateScore() {
        var currentPoints = 0;
        // nni declared with var:
        for (var nni = 0; nni < currentSession.Questions.length + 1; nni++) {
            currentPoints += currentSession.Questions[nni].Score;
        }

        alert('hi');
        document.getElementById('quiz_score').innerHTML= '%' + ((currentPoints / currentSession.TotalPoints) * 100)
    }

此外,您的评估语句每次都会随着您的增量而运行。将长度评估移至声明中:

for (var nni = 0, len = currentSession.Questions.length + 1; nni < len; nni++) {

关于javascript - JavaScript 中的循环出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5635869/

相关文章:

javascript - 无法加载 wasm 应用程序

javascript - 在更改事件中获取选择器值

c++ - C 数组的反向迭代器

c++ - 使用 'lower_bound'

javascript - jquery 事件绑定(bind)不适用于多个动态对象

javascript - 在输入字段中输入乘法或除法,即可对其他 2 个输入字段执行乘法或除法

JavaScript 多个循环

python - 从生成器创建迭代器返回相同的对象

java - 如何在java中迭代每个第二个元素

c# - foreach 循环中奇怪的 IEnumerable 行为