我有这个代码生成素数列表。
<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>
答案 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;
这会导致循环继续而不考虑代码块中的任何进一步语句。这就是为什么放置花括号不产生输出。
正如其他人所说,你应该只是简单地删除代码中的那些特殊花括号,如第一个例子所示。