如果没有花括号

时间:2017-06-10 11:58:13

标签: javascript html

我有这个代码生成素数列表。

<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>

4 个答案:

答案 0 :(得分:2)

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")
}

同样,正如您所看到的,只有continue语句附加到if

如果你想使用一个块语句,你可以放入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")
}

* (缩进代码有很多“正确”的方法。但你确实需要使用一个,这些你没有问题,如果你想要的话代码要清楚。)

答案 1 :(得分:1)

你的解释有点不对劲。正确的解释如下

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

答案 2 :(得分:1)

因为if没有大括号时,只执行if语句后面的代码,因此我假设您只想在continue语句中if。要修复代码,您需要在document.write条件之外取出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语句,如

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.
}

答案 3 :(得分:1)

您的代码确实运行;它只是不产生任何输出。让我们看一下相关的代码:

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

如果i不符合条件的要求,则代码执行不会进入花括号之间的代码块。这种情况的解释很简单。但是当它进入代码块时,它遇到的第一个语句是:

continue;

这会导致循环继续而不考虑代码块中的任何进一步语句。这就是为什么放置花括号不产生输出。

正如其他人所说,你应该只是简单地删除代码中的那些特殊花括号,如第一个例子所示。