Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在这个脚本中可以使用IF语句代替WHILE循环吗?_Javascript_If Statement_While Loop - Fatal编程技术网

Javascript 在这个脚本中可以使用IF语句代替WHILE循环吗?

Javascript 在这个脚本中可以使用IF语句代替WHILE循环吗?,javascript,if-statement,while-loop,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.s

我在很多书的帮助下学习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?
谢谢。

涉及到一个随机数;你可以连续两次得到相同的随机数


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

涉及到一个随机数;你可以连续两次得到相同的随机数


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

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

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

否,因为您可以在一行中选择两次相同的图像,因为您使用的是随机数。

否,因为您可以在一行中选择两次相同的图像,因为您使用的是随机数。

您的目标是进行随机洗牌。试着阅读这个问题的答案:
你的目标是随机洗牌。试着阅读这个问题的答案:

一次重试很可能会再次选择相同的数字,因此
while
循环允许函数不断重复尝试。只有在不期望多个结果时才使用“if”。明白了。谢谢大家的回答!一次重试很可能会再次选择相同的数字,因此
while
循环允许函数不断重复尝试。只有在您不希望出现多个结果时才使用“if”。明白了。谢谢大家的回答!OP的目标是理解书中的JS代码,我想?是的,谢谢。显然,我对编码是新手,我只是想通过问“如果我用这个代替那个怎么办”来理解语句背后的逻辑。OP的目标是理解书中的JS代码,我想?是的,谢谢。显然,我对编码是新手,我只是想通过问“如果我用这个而不是那个”来理解语句背后的逻辑。