javascript - Javascript 中的简单 while 循环查询

标签 javascript this

在《Beginning javascript》一书中,我遇到了一个简单的程序,如下所示。我无法理解这个/那个代码如何在这里工作以及 while 循环如何在这里运行(我知道 while 循环一点,但是 != - 1 部分让它变得困惑&我所做的谷歌搜索结果有点模糊)。感谢任何帮助,如果有任何错误,请随时纠正。我可以理解下面的代码在做什么,但上面的查询仍然有点令人困惑 下面的简单代码正在运行

代码:

var myImages = new Array("monkeyDluffy.png", "roronoaZoro.jpg", "sanji.jpg", "godUssop.png");

function changeImg(that) { //Can be named anything that is just professional
  var newImgNumber = Math.round(Math.random() * 3); //a simple random number generated
  while (that.src.indexOf(myImages[newImgNumber]) != -1) {
    newImgNumber = Math.round(Math.random() * 3);
  }
  that.src = myImages[newImgNumber];

  return false;
}
/*here use of this and that enables the code to perform better for a single object as*/
<html>

<head>
  <title>JS</title>

  <body>
    <img src="monkeyDluffy.png" onclick="return changeImg(this)" />
    <img src="roronoaZoro.jpg" onclick="return changeImg(this)" />
  </body>
</head>

</html>

最佳答案

the != - 1 part makes it confusing

看看the documentation for indexOf :

Return value

The index of the first occurrence of the specified value; -1 if not found.

因此它会在找到指定值时循环。当没有找到时,循环停止。

关于javascript - Javascript 中的简单 while 循环查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42534205/

相关文章:

function - 如何将类型传递给在内部构造函数 ("this"等效项中调用的函数)?

javascript - 对于 3D Canvas 游戏,此代码中的 1/cos(x) 有什么意义?

javascript - Chrome 调试器不会停止

javascript - "new"这个词将函数更改为对象?

java - 为什么当通过 "super"和 "this"调用时 hashCode() 给出相同的结果?

javascript - 如何在回调中访问正确的“this”?

javascript - Angular Foundation 选项卡显示错误的内容和带有 ng-if 的事件选项卡

javascript - 就性能而言,如何正确地迭代项目并将其放入 JavaScript 中的新数组中?

javascript - ionic 捏放大图像

javascript - 关于JavaScript中 "this"的问题