while相关

let str = 'As sly as a fox, as strong as an ox';

let target = 'as'; // 这是我们要查找的目标

let pos = 0;
while (true) {
  let foundPos = str.indexOf(target, pos);
  if (foundPos == -1) break;

  alert( `Found at ${foundPos}` );
  pos = foundPos + 1; // 继续从下一个位置查找
}

有个疑问是,这里的
while (true) {
...
...
}
感觉应该是个无限循环,但实际不是,为什么呢?
麻烦高手给解释下,谢谢~

阅读 2.1k
4 个回答

这段程序能够在下标为71727时找到我们需要的target
当alertFound at 27之后,pos变成28,这时再去执行let foundPos = str.indexOf(target, 28);
founPos就会变成 -1,继续执行,到达break
所以就跳出循环了。

while()括号中的内容是条件体,符合条件继续循环。但是遇到break就会跳出当前循环体了。

break 语句会终止当前循环,使程序跳到下一个语句执行。
break

str.indexOf(target,pos) 指从 pos 位置以后的部分查找target。
每找到一次target,pos都会从找到的下一个位置查找,直到找不到target,该函数返回-1
break出循环

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题