我最近一直在研究循环和条件。我在理解这些概念方面非常成功,但括号继续让我感到困惑。如果没有第三行末尾的括号,以及底部的最后一个括号,则通话记录将不会显示“发电机#1已关闭”。喜欢它。为什么这些括号会产生如此大的差异?
var totalGen = 19;
var totalMW = 0;
for (var genNumber = 1; genNumber <= totalGen; genNumber++){
if (genNumber <= 4 && genNumber % 2 == 0) {
totalMW += 62;
console.log("Generator #" + genNumber + " is on, adding 62 MW, for a total of " + totalMW + " MW!");
}
else if (genNumber >= 5 && genNumber % 2 == 0) {
totalMW += 124;
console.log("Generator #" + genNumber + " is on, adding 124 MW, for a total of " + totalMW + " MW!");
}
else {
console.log("Generator #" + genNumber + " is off.");
}
}
答案 0 :(得分:1)
您需要将其视为语句或语句组。如果您只有一个语句,则不需要大括号。
例如:
for(...) statement;
if (cond1) statement;
else if (cond2) statement;
声明可以是一行。但是,如果您需要多个语句,则需要使用大括号对它们进行分组:
for(...) {
statement 1;
statement 2;
etc..
}
if (cond1) statement; // single line
else if (cond2) { // group, only executed if cond2 is true
statement 1;
statement 2;
}
else // single line
statement;
这样浏览器就会知道所有这些语句都属于一个步骤。
如果你这样做了:
if (cond)
statement 1;
statement 2;
如果cond为true,则只执行语句1。语句2将被执行,换句话说,它将与:
相同if (cond) statement 1;
statement 2;
在所有情况下使用括号都是一个好习惯,因为它可以防止在条件等中添加多个语句的事故。
答案 1 :(得分:0)
在这种情况下,这些括号根本没有任何区别。
当循环中只有一个语句时(就像这里一样),不需要括号。
for (a, b, c) d;
完全相同:
for (a, b, c) { d; }
我个人总是使用括号,即使块中只有一个语句。我认为它使代码更易于阅读和维护。
答案 2 :(得分:0)
For循环和if语句包含在花括号中 - 这就是语法。
因此,如果在for中嵌入if,则每个块必须位于其各自的块内。
if(something){
return;
}
for(i=0; i<10; i++){// open curly for the for
if(i == 4){//curly for the if
console.log('i is 4!');
}//end curly for the if
}//end curly for the for
答案 3 :(得分:0)
javascript中的for循环可以使用或不使用大括号。
for (...) {
//statement
}
与
相同for (...)
//statement
但是,这仅适用于单个陈述......
for (...) {
if (...) {
//A
}
if (....) {
//B
}
}
与
相同for (...)
if (...) {
//A
}
if (....) {
//B
}
因为只有第一个if
将被for循环捕获,另一个if将被忽略,直到循环结束。
在你的代码中,你有一个单一的if-then-else-if-then-else
语句,所以它被for循环捕获。