版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第詳解怎么檢測和防止JavaScript死循環(huán)在for語句中修復(fù)無限循環(huán)
在while語句中修復(fù)無限循環(huán)
總結(jié)
Js死循環(huán)是怎么造成的呢!其實在我們寫代碼時一些不注意或漏寫,就寫出死循環(huán),就如下面代碼:
如果i++沒有寫上,這個就是死循環(huán)了,死循環(huán)的后果想知道的自己不防去試試。
死循環(huán)就是一段錯誤的阻止終止循環(huán)條件JavaScript代碼。
無限循環(huán)是危險的,因為它會導(dǎo)致您運行代碼的環(huán)境(瀏覽器或NodeJS服務(wù)器)崩潰或凍結(jié)您的計算機,導(dǎo)致它停止響應(yīng)。
for和while語句是一個無限循環(huán)的常見原因,所以本教程將幫助您了解如何檢測和修復(fù)所造成的語句無限循環(huán)。
讓我們從修復(fù)for語句中的無限循環(huán)開始。
在for語句中修復(fù)無限循環(huán)
一個for語句可能會導(dǎo)致一個無限循環(huán),當(dāng)你錯誤的第二表達式把賦值運算符,而不是一個比較運營商(在條件表達式)
下面是一個for會導(dǎo)致無限循環(huán)的語句示例。注意第二個表達式是如何i=10:
for(leti=0;i=10;i++){
console.log(Infiniteloop
}
該for語句要求第二個表達式的計算結(jié)果false為終止循環(huán)。在上面的示例中,賦值運算符i=10被放置為條件表達式,而不是像i10or之類的比較運算符i10。
由于賦值運算符的計算結(jié)果始終為true,因此該for語句不會停止打印Infiniteloop到控制臺,這可能會導(dǎo)致您的計算機死機。
要修復(fù)for上面的語句,您需要將第二個表達式替換為該for語句可以達到的內(nèi)容。一個例子是使用比較運算符(=,,,=)
//thesecondexpressionisreplacedwith
for(leti=0;ii++){
console.log(Infiniteloop
}
同樣的錯誤還有另一個版本。這一次,第一個表達式和第二個表達式導(dǎo)致無限循環(huán):
for(leti=5;ii++){
console.log(Infiniteloop
}
從上面的代碼可以看出,只要變量i大于,循環(huán)就會繼續(xù)0。
由于的值i已經(jīng)大于0初始化時的值,因此第二個表達式將始終計算為true,從而導(dǎo)致無限循環(huán)。
為了修復(fù)上面的代碼,第三個表達式必須減少i而不是增加它的值:
for(leti=5;ii--){
console.log(Infiniteloop
}
另一個for可能導(dǎo)致無限循環(huán)的語句示例是省略括號內(nèi)的所有三個表達式,如下所示:
for(;;){
console.log(Infiniteloop
}
但是上面的代碼只能是故意寫的,所以除非你想讓你的電腦崩潰,否則你不應(yīng)該在你的項目中使用它。
盡管for您編寫的語句肯定會比上面的示例更復(fù)雜,但您仍然可以使用相同的原則來查找和修復(fù)語句中的錯誤。
首先,您需要確保放在for語句中的第二個表達式實際上可以計算為false.
如果第二個表達式已經(jīng)正確,則開始檢查第一個和第三個表達式。第一個表達式是否初始化了一個true在執(zhí)行第二個表達式時始終計算為的值?
最后,第三個表達式是否正確遞增或遞減第一個表達式中初始化的變量的值?
總結(jié)一下:首先檢查你的第二個表達式,然后按順序檢查第一個和第三個表達式。
接下來,讓我們學(xué)習(xí)如何修復(fù)由while語句引起的無限循環(huán)。
在while語句中修復(fù)無限循環(huán)
一個while語句可以導(dǎo)致無限循環(huán),當(dāng)條件表達式括號始終計算里面放true:
while(true){
console.log(Infiniteloop
}
為了防止無限循環(huán),while語句的條件表達式必須能夠計算為false。
編寫while語句時最常見的錯誤之一是忘記修改用于條件表達式的變量的值。
請注意i以下示例中never的值如何更改:
leti=0;
while(i6){
console.log(Infiniteloop
}
您需要增加語句體i內(nèi)部的值,while以便在false執(zhí)行循環(huán)時條件表達式的計算結(jié)果為:
leti=0;
while(i6){
console.log(Infiniteloop
i++;
}
無論您的while語句多么復(fù)雜,您都需要確保括號內(nèi)的條件表達式while()可以計算為false.
如果仍然找不到導(dǎo)致無限循環(huán)的原因,則可以使用該console.log()語句打印條件表達式使用的變量的值:
l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 民辦院校財務(wù)制度
- 2026天津市西青經(jīng)開區(qū)投資促進有限公司面向全國選聘招商部長(中層正職)1人備考題庫及完整答案詳解
- 2026云南弘玉滇中人力資源產(chǎn)業(yè)園運營管理有限公司就業(yè)見習(xí)崗位招募2人備考題庫及1套參考答案詳解
- 2026北京市懷柔區(qū)招聘21名國有企業(yè)管培生備考題庫含答案詳解
- 2026華中師范大學(xué)幼兒園(非事業(yè)編B類崗)招聘1人備考題庫(湖北)及參考答案詳解
- 2026江蘇南京市中國藥科大學(xué)劉慶賀團隊誠聘博士后備考題庫及答案詳解(考點梳理)
- 2025云南昆一中教育集團學(xué)貫中學(xué)招聘1人備考題庫及答案詳解參考
- 2026年德宏州事業(yè)單位考試招聘工作人員備考題庫(208人)及答案詳解一套
- 2026廣東東莞市疾病預(yù)防控制中心(東莞市衛(wèi)生監(jiān)督所)招聘聘用人員1人備考題庫有完整答案詳解
- 2026安徽亳州市蒙城縣商業(yè)綜合體招聘勞務(wù)派遣人員備考題庫(四次)及答案詳解(易錯題)
- 2026年哈爾濱通河縣第一批公益性崗位招聘62人考試參考試題及答案解析
- 六年級寒假家長會課件
- 物流鐵路專用線工程節(jié)能評估報告
- 2026天津市南開區(qū)衛(wèi)生健康系統(tǒng)招聘事業(yè)單位60人(含高層次人才)備考核心試題附答案解析
- 重瞼手術(shù)知情同意書
- 研發(fā)部門員工加班管理細則
- 46566-2025溫室氣體管理體系管理手冊及全套程序文件
- 九師聯(lián)盟2026屆高三上學(xué)期12月聯(lián)考英語(第4次質(zhì)量檢測)(含答案)
- 第21章 反比例函數(shù)(單元測試·綜合卷)(含答案)-滬科版(2024)九上
- 鋼結(jié)構(gòu)橋梁施工監(jiān)測方案
- 2025年秋青島版(五四學(xué)制)小學(xué)數(shù)學(xué)五年級上冊(全冊)知識點梳理歸納
評論
0/150
提交評論