Codecademy FizzBu​​zz应用程序,坚持第1步

mrd*_*ole 2 javascript fizzbuzz

这是Codecamedy的FizzBu​​zz课程的代码

var i;
for ( i = 1; i > 20; i++ ) {
  "hello"
  if ( i % 3 === 0 ) {
    if ( i % 5 === 0 ) {
      "FizzBuzz";
    }
    else {
      "Fizz";
    }
  }
  else if ( i % 5 === 0 ) {
    "Buzz";
  }
 else {
    i;
  }
}
Run Code Online (Sandbox Code Playgroud)

我试图首先测试数字(i)是否可以被3整除.如果是,我想检查它是否也可以被5整除.如果两个条件都是真的,我希望它说"FizzBu​​zz ".如果只有第一个条件为真,那就应该说"Fizz".然后,在确定i不能被3整除之后,它应该检查我是否可以被5整除并且如果是这样则显示"Buzz".如果没有所有的可分性,它应该只显示数字.

正如我所料......它没有按预期工作.我犯了什么非常令人尴尬的错误?

Ada*_*kis 8

首先,你的循环甚至没有开始:

for ( i = 1; i > 20; i++ )
Run Code Online (Sandbox Code Playgroud)

因为中间条件最初是假的,所以不会迭代一次.我想你的意思是:

for ( i = 1; i <= 20; i++ )
Run Code Online (Sandbox Code Playgroud)
"FizzBuzz";
Run Code Online (Sandbox Code Playgroud)

只是JavaScript忽略的字符串文字.你需要以某种方式输出这个字符串:

console.log("FizzBuzz");
Run Code Online (Sandbox Code Playgroud)

此外,这个块

else {
    i;
  }
Run Code Online (Sandbox Code Playgroud)

也没有做任何事情.你想显示那些既不被3也不能被5整除的数字?

else {
    console.log(i);
  }
Run Code Online (Sandbox Code Playgroud)

并且,在类似的说明中,"hello"顶部循环应该做什么?


从更积极的方面来说,我看到你正在使用严格的平等:

if ( i % 5 === 0 )
Run Code Online (Sandbox Code Playgroud)

这是一个非常非常好的习惯.如果你不小心的话,非严格相等运算符==会做各种隐式转换. 除非您有意希望发生这些隐式转换,否则始终使用严格相等.