mrd*_*ole 2 javascript fizzbuzz
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整除.如果两个条件都是真的,我希望它说"FizzBuzz ".如果只有第一个条件为真,那就应该说"Fizz".然后,在确定i不能被3整除之后,它应该检查我是否可以被5整除并且如果是这样则显示"Buzz".如果没有所有的可分性,它应该只显示数字.
正如我所料......它没有按预期工作.我犯了什么非常令人尴尬的错误?
首先,你的循环甚至没有开始:
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)
这是一个非常非常好的习惯.如果你不小心的话,非严格相等运算符==会做各种隐式转换. 除非您有意希望发生这些隐式转换,否则始终使用严格相等.