【发布时间】:2017-04-18 14:13:45
【问题描述】:
我遇到了一些误解。有一个带有一些 if 语句的 for 循环:
for (var number = 1; number < 100; number++) {
if (number % 3 == 0 && number % 5 == 0)
console.log(number + "fizzbuzz");
if (number % 5 == 0)
console.log(number + " buzz");
if (number % 3 == 0)
console.log(number + " fizz");
else console.log(number);
}
这段代码的输出是 1, 2, 3 fizz, 4, 5 buzz 等。所以这是预期的结果。 但是如果我们删除大括号,输出将是这样的:
15fizzbuzz
30fizzbuzz
45fizzbuzz
60fizzbuzz
75fizzbuzz
90fizzbuzz
100 buzz
100
此外,该程序还有第二个实现(使用正确的 if-else 语句):
for (var number = 1; number < 100; number++)
if (number % 3 == 0 && number % 5 == 0)
console.log(number + "fizzbuzz");
else if (number % 5 == 0)
console.log(number + "buzz");
else if (number % 3 == 0)
console.log(number + "fizz");
else console.log(number);
注意也没有大括号,但是输出没问题。 你能解释一下,有什么区别吗?
【问题讨论】:
-
不是您的问题,但始终使用大括号。这样做可以防止许多愚蠢的错误。
-
并显示第二个输出的代码。
-
第二种情况,只执行if/else语句之一。
-
大括号在这种情况下没有任何区别。这是第一个中缺少
else子句。 -
您的第一个示例没有将
else用于前两个if语句,因此将测试所有3 个if条件(并且每个条件都可能产生输出)。你的第二个是,所以只有一个分支会被输入。而且,您说第二个实现是以“正确的方式”完成的(使用else分支),但实际上并不是因为没有大括号。这是合法的,但非常糟糕的做法。
标签: javascript for-loop if-statement