freeCodeCamp/curriculum/challenges/chinese-traditional/02-javascript-algorithms-an.../debugging/prevent-infinite-loops-with...

1.8 KiB
Raw Blame History

id title challengeType forumTopicId dashedName
587d7b86367417b2b2512b3d 使用有效的終止條件防止無限循環 1 301192 prevent-infinite-loops-with-a-valid-terminal-condition

--description--

最後一個話題是可怕的無限循環。 當需要程序運行代碼塊一定次數或滿足條件時,循環是很好的工具,但是它們需要終止條件來結束循環。 無限循環可能會使瀏覽器凍結或崩潰,並導致程序執行混亂,沒有人想要這樣的結果。

在本節的介紹中有一個無限循環的例子——它沒有終止條件來擺脫loopy()內的while循環。 不要調用這個函數!

function loopy() {
  while(true) {
    console.log("Hello, world!");
  }
}

程序員的工作是確保最終達到終止條件,該條件告訴程序何時跳出循環。 有一種錯誤是從終端條件向錯誤方向遞增或遞減計數器變量。 另一種是在循環代碼中意外重置計數器或索引變量,而不是遞增或遞減它。

--instructions--

myFunc()函數包含一個無限循環,因爲終止條件i != 4永遠不會爲false(並中斷循環) -i將每次遞增 2然後跳過 4因爲i是從奇數開始遞增。 在終端條件中輸入比較運算符,使循環僅在i小於或等於 4 的情況下運行。

--hints--

你應該在for循環的終止條件(中間部分)中更改比較運算符。

assert(code.match(/i\s*?<=\s*?4;/g).length == 1);

你應該修改比較運算符來避免出現死循環。

assert(!code.match(/i\s*?!=\s*?4;/g));

--seed--

--seed-contents--

function myFunc() {
  for (let i = 1; i != 4; i += 2) {
    console.log("Still going!");
  }
}

--solutions--

function myFunc() {
 for (let i = 1; i <= 4; i += 2) {
   console.log("Still going!");
 }
}