簡體   English   中英

如果沒有大括號

[英]if without curly braces

我有這段代碼生成素數列表。

<script>
    var num = prompt("enter limit")

    for(i = 2; i < num; i++)
    {
        if((i % 2 == 0 || i % 3 == 0))
            continue;

        document.write(i + " is a PRIME")
    }
</script>

我的問題是:為什么下面的以下代碼無法運行; if語句中添加了花括號。

<script>
    var num = prompt("enter limit")

    for(i =2; i < num; i++)
    {
        if((i % 2 == 0 || i % 3 == 0))
        {
            continue;
            document.write(i + " is a PRIME")
        }
    }
</script>

if語句使連接到它的條件就可以了測試條件的一個聲明。 在你的情況下, 一個說法是continue

使用花括號時,您將在if語句中附加一個語句 ,該語句將其他語句組合在一起。

正確*縮進的原始代碼為:

var num = prompt("enter limit")

for (i = 2; i < num; i++) {
    if ((i % 2 == 0 || i % 3 == 0))
        continue;
    document.write(i + " is a PRIME")
}

同樣,如您所見, if僅附加了continue語句。

如果要使用block語句,則continue即可保持相同的含義:

var num = prompt("enter limit")

for (i = 2; i < num; i++) {
    if ((i % 2 == 0 || i % 3 == 0)) {
        continue;
    }
    document.write(i + " is a PRIME")
}

* (縮進代碼有很多“正確”的方法。但是,如果您想使代碼清晰,則確實需要使用其中一種 ,而您在問題中沒有使用過。)

您的解釋有些錯誤。 正確的解釋如下

if((i % 2 == 0 || i % 3 == 0)) {
    continue;
}
document.write(i + " is a PRIME")

因為if時沒有大括號,則僅執行if語句之后的代碼,因此我假設您只想在if語句中continue執行。 為了修復您的代碼,您需要在if條件之外取出document.write語句。

var num = prompt("enter limit")

for (i = 2; i < num; i++) {
  if ((i % 2 == 0 || i % 3 == 0)) {
    continue;
  }

  document.write(i + " is a PRIME");
}

如果您編寫如下的if語句

if(YOUR_CONDITION_HERE)
  continue; //only this will be considered in the `if` statement

但是如果你寫成

if(YOUR_CONDITION_HERE) {
  continue; //this will be considered inside the if statement and also other code which is inside the curly braces.
}

您的代碼可以運行; 它只是不產生任何輸出。 讓我們看一下相關代碼:

if((i % 2 == 0 || i % 3 == 0))
{
    continue;
    document.write(i + " is a PRIME")
}

如果i不滿足條件語句的要求,則代碼執行不會在花括號之間輸入代碼塊。 對於這種情況足夠簡單的解釋。 但是,當它確實進入代碼塊時,它遇到的第一條語句是:

continue;

這將導致循環繼續進行,而無需考慮代碼塊中的任何其他語句。 這就是為什么將花括號放在沒有任何輸出的原因。

正如其他人所述,您只需要在代碼中消除那些特殊的花括號即可,如第一個示例所示。

暫無
暫無

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

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