JavaScript For / Loop比较问题

时间:2013-12-04 16:12:49

标签: javascript

在我看来,这个JavaScript应该可行,但它不起作用!循环永远不会运行(它完全被跳过)。

FYI totalPages = 15

        for (var i = 1; i >= totalPages; i++) {
            pagingOptions += '<option value="' + i + '">' + i + '</option> ';
        }

如果我这样更改它,它可以工作:

        for (var i = 1; i < totalPages; i++) {
            pagingOptions += '<option value="' + i + '">' + i + '</option> ';
        }

有什么问题?如果比较是“i&lt; totalPages”,JavaScript将只运行循环?为什么会这样呢?

2 个答案:

答案 0 :(得分:4)

for循环的语义:

for (expression1; expression2; expression3) {
  // ...
}
AFTER: // statements

是:

  1. 评估expression1
  2. 评估expression2并检查它是否为truthy。如果没有,请跳过后续代码(此处为“AFTER”)
  3. 评估与for语句
  4. 关联的语句(通常是块语句)
  5. 评估expression3
  6. 转到第2步
  7. 因此,当循环体的迭代应该继续时,中间表达式应该评估为true。只要它是false - 即使它是第一次尝试的false - 循环结束。

    另一种思考方式就是:

    expression1;
    while (expression2) {
      // statements
      expression3;
    }
    

答案 1 :(得分:0)

我认为你的错误大于/小于此:

   for (var i = 1; i <= totalPages; i++) {
        pagingOptions += '<option value="' + i + '">' + i + '</option> ';
    }

在我看来,这应该有效(对于给定的工作定义,因为我们不知道您是否希望i小于,或小于或等于totalPages)。