1.8 KiB
1.8 KiB
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!");
}
}