2017-06-10 235 views
0

我有这段代码可以生成素数列表。如果没有花括号

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

欢迎来到Stackoverflow @doctorWeird。当您提出问题时,请缩进您的代码。 – csblo

回答

1

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

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

因为if时没有大括号,在if语句执行后,只有代码,因此我假设你想continue里面只有你if声明。为了修复您的代码,您需要在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. 
} 
2

if语句使连接到它有条件的一个声明在它测试的条件下。在你的情况下,一个声明是continue

当您使用大括号时,您正在将一条语句附加到if a 块语句,它是将其他语句组合在一起的语句。

你的原代码,正确*缩进是:

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

您的代码不会运行。它只是不会产生任何输出。让我们来看看相关的代码:

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

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

continue; 

这导致环继续在不考虑代码块中的任何进一步的陈述。这就是为什么放置花括号的原因,因为你没有输出。

正如其他人所指出的,你应该只是单纯的消除您的代码这些特定的花括号中所示的第一个例子。