簡體   English   中英

JavaScript For / Loop比較問題

[英]JavaScript For/Loop comparison issue

在我看來,這個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 <totalPages”,JavaScript只會運行循環? 為什么會這樣呢?

for循環的語義:

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

是:

  1. 評估expression1
  2. 評估expression2並檢查它是否truthy 如果沒有,請跳過后續代碼(此處為“AFTER”)
  3. 評估與for語句關聯的語句(通常是塊語句)
  4. 評估expression3
  5. 轉到第2步

因此,當循環體的迭代應該繼續時,中間表達式應該評估為true 一旦它是false - 即使它在第一次嘗試時是false的 - 循環結束。

想到它的另一種方式是它就像:

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

我認為你的錯誤大於/小於此:

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

在我看來,這應該有效(對於給定的工作定義,因為我們不知道你是否希望i小於或小於或等於totalPages )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM