写下1到90之间的数字
使用for循环
如果数字可被3整除" Fizz"
如果数字可被5整除" Buzz"
当数字可以被3和5整除时,写下" FizzBuzz"
写完" FizzBuzz"后,显示换行符
这是我的代码:
script type="text/javascript">
/* <![CDATA[ */
for (var count = 1; count <= 90; ++count ) {
document.write(count);
if (count % 3 ==0 && count % 5 == 0)
document.write(" FizzBuzz <br \>")
else
if (count % 3 == 0)
document.write(" Fizz")
else
if (count % 5 == 0)
document.write(" Buzz")
document.write("<br />")
}
/* ]]> */
</script>
我的问题是我的代码是用最好的方式写的,我正在做什么? 我能做些什么不同才能更有效地写出来?
答案 0 :(得分:0)
您可以使用开关
而不是使用逻辑for (var count = 1; count <= 90; ++count ) {
document.write(count);
var logics = (count % 3 ==0) + '-' + (count % 5 == 0);
switch(logics){
case 'true-false':{ document.write(" Fizz"); break;}
case 'false-true':{ document.write(" Buzz"); break;}
case 'true-true' :{ document.write(" FizzBuzz <br>"); break;}
}
document.write("<br />")
}
答案 1 :(得分:0)
我在这做了几件事。首先,我减少了代码量,使所有内容更具可读性。其次,我将测试结果命名为更好地指出它们是什么(可被3整除并可被5整除)。我还更新了代码,以完全按照您的说法反映要求。你说在打印FizzBuzz时你只需要一个换行符。没有迹象表明您需要任何其他换行符。
我做的最后一件事是减少冗余测试。如果一个数字可以被3和5整除,它将首先打印Fizz(isDivBy3)并在之后打印Buzz(因为它是'DivBy5),然后将添加换行符。
<script type="text/javascript">
for (var count = 1; count <= 90; ++count ) {
var isDivBy3 = !(count % 3);
var isDivBy5 = !(count % 5);
if( isDivBy3 ) document.write('Fizz');
if( isDivBy5 ) document.write('Buzz');
if( isDivBy3 && isDivBy5 ) document.write('<br/>');
}
</script>