for ... loop& if..else语句......我的代码看起来如何?

时间:2014-10-24 03:40:55

标签: javascript if-statement for-loop

写下1到90之间的数字

使用for循环

如果数字可被3整除" Fizz"

如果数字可被5整除" Buzz"

当数字可以被3和5整除时,写下" FizzBu​​zz"

写完" FizzBu​​zz"后,显示换行符

这是我的代码:

script type="text/javascript">                                                                                                                  
/* <![CDATA[ */ 
    for (var count = 1; count <= 90; ++count ) {
        document.write(count);
        if (count % 3 ==0 && count % 5 == 0)
                document.write("&nbsp; FizzBuzz <br \>")
        else 
            if (count % 3 == 0)
                document.write("&nbsp; Fizz")
        else
            if (count % 5 == 0) 
                document.write("&nbsp; Buzz")
        document.write("<br />")      
    }
/* ]]> */
</script> 

我的问题是我的代码是用最好的方式写的,我正在做什么? 我能做些什么不同才能更有效地写出来?

2 个答案:

答案 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("&nbsp; Fizz"); break;}
      case 'false-true':{ document.write("&nbsp; Buzz"); break;}
      case 'true-true' :{ document.write("&nbsp; FizzBuzz <br>"); break;}
    }
    document.write("<br />")      
}

答案 1 :(得分:0)

我在这做了几件事。首先,我减少了代码量,使所有内容更具可读性。其次,我将测试结果命名为更好地指出它们是什么(可被3整除并可被5整除)。我还更新了代码,以完全按照您的说法反映要求。你说在打印FizzBu​​zz时你只需要一个换行符。没有迹象表明您需要任何其他换行符。

我做的最后一件事是减少冗余测试。如果一个数字可以被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>