gpt4 book ai didi

javascript - for 循环和 if 语句

转载 作者:行者123 更新时间:2023-11-28 18:01:27 25 4
gpt4 key购买 nike

我遇到了一些误解。有一个带有一些 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 嘶嘶声、4、5 嗡嗡声等。这就是预期的结果。但是如果我们删除大括号,输出将是这样的:

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

请注意,也没有大括号,但输出正常。你能解释一下,有什么区别吗?

最佳答案

当您错过分号或括号时,JavaScript 会尝试自行插入它,有时会产生一些像这样的奇怪结果。 (根据规则,这是正确的,只是人类和机器在如何处理它上没有达成一致:D)

当您删除 for 循环的大括号时,JavaScript 尝试在代码中放入大括号并运行它,这与您期望的行为方式不同,因此您感到困惑!

您所写和读过的内容:

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

javascript 用它做了什么并执行:

for (var number = 1; number < 100; number++){ //runs loop here
if (number % 3 == 0 && number % 5 == 0){
console.log(number + "fizzbuzz"); //prints for first condition
}
}

//now number is 100!

if (number % 5 == 0){
console.log(number + " buzz"); //prints for second condition once cause 100%5==0 is true
}

if (number % 3 == 0){
console.log(number + " fizz");
}
else{
console.log(number); //prints for this else condition once cause 100%3==0 is false
}

这是完全有效的并且这里没有错误或错误!

发生这种情况是因为如果 if 之后没有立即 else,那么 javascript 会终止该语句,但如果您使用 else...if > 然后继续该语句,直到找到 else 或后面没有 else 的语句

如果您想尝试这种行为,请使用 Google Closure Compiler查看机器如何解释代码。

注意:正如@carcigenicate 在评论中建议的那样,始终使用大括号!

关于javascript - for 循环和 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43474652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com