可以在此脚本中使用IF语句而不是WHILE循环吗?

时间:2015-09-24 19:20:11

标签: javascript if-statement while-loop

我在许多书籍的帮助下学习JavaScript。在其中一个中,我想出了一个显示几个标志的脚本,然后你点击它们随机改变它们:

var myImages = new Array("usa.gif","canada.gif","jamaica.gif","mexico.gif");

function changeImg(that) {
        var newImgNumber = Math.round(Math.random() * 3);

        while (that.src.indexOf(myImages[newImgNumber]) != -1)
        {
            newImgNumber = Math.round(Math.random() * 3);
        }

        that.src = myImages[newImgNumber];
        return false;
}

它有一个while循环,以确保当你点击一个标志时你不会得到同一个标志。 HTML中的其余代码如下所示:

<body>
    <img name="img0" src="usa.gif" border="0" onclick="return changeImg(this)" />
    <img name="img1" src="mexico.gif" border="0" onclick="return changeImg(this)" />
</body>

现在,我的问题是,如果我使用IF语句而不是while循环,显然代码的工作方式相同。在这个特定的例子中,为什么使用while循环而不是IF? 感谢。

4 个答案:

答案 0 :(得分:6)

while语句基本上翻译为“当我选择的数字与当前图片标记中已有的图像的索引匹配时,继续”。因此,虽然if语句可能在大多数情况下都有效,但当您点击0时,您的随机数生成器可能会连续多次生成img0个数字。 while确保最终获得新图片。

答案 1 :(得分:3)

涉及随机数;你可以连续两次获得相同的随机数。

检查一次是不够的 - 生成的下一个数字可能是相同的。

答案 2 :(得分:1)

不,因为您可以连续两次选择相同的一个,因为您使用的是随机数。

答案 3 :(得分:1)

你的目标是做一个随机的随机播放。尝试阅读该问题的答案: How to randomize (shuffle) a JavaScript array?