最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解怎么檢測和防止JavaScript死循環(huán)

 更新時間:2021年11月28日 10:45:24   作者:allway2  
最近工作中遇到了一些死循環(huán)導(dǎo)致的頁面卡死問題,經(jīng)過 trouble shooting 和代碼修復(fù)解決了問題,所以下面這篇文章主要給大家介紹了怎么檢測和防止JavaScript死循環(huán)的相關(guān)資料,需要的朋友可以參考下

前言

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),當你錯誤的第二表達式把賦值運算符,而不是一個比較運營商(在條件表達式)

下面是一個for會導(dǎo)致無限循環(huán)的語句示例。注意第二個表達式是如何i = 10:

for (let i = 0; i = 10; i++) {
  console.log("Infinite loop");
}

該for語句要求第二個表達式的計算結(jié)果false為終止循環(huán)。在上面的示例中,賦值運算符i = 10被放置為條件表達式,而不是像i < 10or之類的比較運算符i > 10。

由于賦值運算符的計算結(jié)果始終為true,因此該for語句不會停止打印"Infinite loop"到控制臺,這可能會導(dǎo)致您的計算機死機。

要修復(fù)for上面的語句,您需要將第二個表達式替換為該for語句可以達到的內(nèi)容。一個例子是使用比較運算符 ( =<, <, >, >=)

// the second expression is replaced with <
for (let i = 0; i < 10; i++) {
  console.log("Infinite loop");
}

同樣的錯誤還有另一個版本。這一次,第一個表達式和第二個表達式導(dǎo)致無限循環(huán):

for (let i = 5; i > 0; i++) {
  console.log("Infinite loop");
}

從上面的代碼可以看出,只要變量i大于,循環(huán)就會繼續(xù)0。

由于 的值i已經(jīng)大于0初始化時的值,因此第二個表達式將始終計算為true,從而導(dǎo)致無限循環(huán)。

為了修復(fù)上面的代碼,第三個表達式必須減少i而不是增加它的值:

for (let i = 5; i > 0; i--) {
  console.log("Infinite loop");
}

另一個for可能導(dǎo)致無限循環(huán)的語句示例是省略括號內(nèi)的所有三個表達式,如下所示:

for (;;) {
  console.log("Infinite loop");
}

但是上面的代碼只能是故意寫的,所以除非你想讓你的電腦崩潰,否則你不應(yīng)該在你的項目中使用它。

盡管for您編寫的語句肯定會比上面的示例更復(fù)雜,但您仍然可以使用相同的原則來查找和修復(fù)語句中的錯誤。

首先,您需要確保放在for語句中的第二個表達式實際上可以計算為false.

如果第二個表達式已經(jīng)正確,則開始檢查第一個和第三個表達式。第一個表達式是否初始化了一個true在執(zhí)行第二個表達式時始終計算為的值?

最后,第三個表達式是否正確遞增或遞減第一個表達式中初始化的變量的值?

總結(jié)一下:首先檢查你的第二個表達式,然后按順序檢查第一個和第三個表達式。

接下來,讓我們學習如何修復(fù)由while語句引起的無限循環(huán)。

在 while 語句中修復(fù)無限循環(huán)

一個while語句可以導(dǎo)致無限循環(huán),當條件表達式括號始終計算里面放true:

while (true) {
  console.log("Infinite loop");
}

為了防止無限循環(huán),while 語句的條件表達式必須能夠計算為false。

編寫while語句時最常見的錯誤之一是忘記修改用于條件表達式的變量的值。

請注意i以下示例中 never的值如何更改:

let i = 0;
 
while (i < 6) {
  console.log("Infinite loop");
}

您需要增加語句體i內(nèi)部的值,while以便在false執(zhí)行循環(huán)時條件表達式的計算結(jié)果為:

let i = 0;
 
while (i < 6) {
  console.log("Infinite loop");
  i++;
}

無論您的while語句多么復(fù)雜,您都需要確保括號內(nèi)的條件表達式while()可以計算為false.

如果仍然找不到導(dǎo)致無限循環(huán)的原因,則可以使用該console.log()語句打印條件表達式使用的變量的值:

let i = 0;
 
while (i < 6) {
  console.log("Infinite loop");
  i++;
  console.log(i);
}

控制臺日志可以幫助您查明錯誤的代碼行并修復(fù)它。

總結(jié)

到此這篇關(guān)于怎么檢測和防止JavaScript死循環(huán)的文章就介紹到這了,更多相關(guān)檢測和防止js死循環(huán)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • javascript權(quán)威指南 學習筆記之javascript數(shù)據(jù)類型

    javascript權(quán)威指南 學習筆記之javascript數(shù)據(jù)類型

    JavaScript中允許使用三種基本數(shù)據(jù)類型 數(shù)字,文本字符和布爾值。其中數(shù)字包括符點數(shù).此外,它還支持兩種小數(shù)據(jù)類型 -null(空)和undefined(未定義),該兩種小數(shù)據(jù)類型,它們各自只定義了一個值 。
    2011-09-09
  • 生成無限制的微信小程序碼的示例代碼

    生成無限制的微信小程序碼的示例代碼

    這篇文章主要介紹了生成無限制的微信小程序碼的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • 微信小程序自定義導(dǎo)航欄(模板化)

    微信小程序自定義導(dǎo)航欄(模板化)

    這篇文章主要為大家詳細介紹了微信小程序自定義導(dǎo)航欄(模板化),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • js實現(xiàn)input密碼框提示信息的方法(附html5實現(xiàn)方法)

    js實現(xiàn)input密碼框提示信息的方法(附html5實現(xiàn)方法)

    這篇文章主要介紹了js實現(xiàn)input密碼框提示信息的方法,涉及JavaScript頁面元素的獲取,屬性判斷及樣式設(shè)置等技巧,并附帶html5的相關(guān)實現(xiàn)方法,需要的朋友可以參考下
    2016-01-01
  • javascript字符串替換及字符串分割示例代碼

    javascript字符串替換及字符串分割示例代碼

    javascript中的字符串替換及字符串分割在某些情況下還是比較實用的,下面有個不錯的示例,感興趣的朋友可以參考下
    2013-12-12
  • 通過示例徹底搞懂js閉包

    通過示例徹底搞懂js閉包

    下面小編就為大家?guī)硪黄ㄟ^示例徹底搞懂js閉包。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 詳解JavaScript進度管理

    詳解JavaScript進度管理

    這篇文章主要介紹了JavaScript進度管理,對進度管理感興趣的同學,可以參考下
    2021-04-04
  • JavaScript實現(xiàn)簡單精致的圖片左右無縫滾動效果

    JavaScript實現(xiàn)簡單精致的圖片左右無縫滾動效果

    這篇文章主要介紹了JavaScript實現(xiàn)簡單精致的圖片左右無縫滾動效果,涉及javascript結(jié)合時間函數(shù)動態(tài)操作頁面元素屬性的相關(guān)技巧,需要的朋友可以參考下
    2017-03-03
  • js判斷PC端與移動端跳轉(zhuǎn)

    js判斷PC端與移動端跳轉(zhuǎn)

    本文主要介紹了js判斷PC端與移動端跳轉(zhuǎn)的方法,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • javascript管中窺豹 形參與實參淺析

    javascript管中窺豹 形參與實參淺析

    本想從語言的角度來分析,無奈功力不夠,只能粗淺的嘗試一下,于是稱之管中窺豹,還望大牛指正
    2011-12-12

最新評論

德昌县| 浦县| 子洲县| 金阳县| 华蓥市| 浠水县| 蒲城县| 罗定市| 遂川县| 襄汾县| 信阳市| 临沂市| 淳化县| 濉溪县| 巴林右旗| 榆林市| 资阳市| 左权县| 郓城县| 巴青县| 夏津县| 全州县| 全椒县| 长汀县| 新安县| 平阴县| 广丰县| 台东县| 无棣县| 永安市| 阿拉善右旗| 宜阳县| 闸北区| 舞阳县| 和政县| 芦溪县| 沈阳市| 瓮安县| 宝丰县| 天镇县| 德钦县|