真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

javascript溢出,js堆棧溢出

javascript在使用textinput時出現(xiàn)堆棧溢出

你在事件響應時改變文本框的值,會導致再次觸發(fā)textinput事件,然后就死循環(huán)了,當然棧就溢出了。而keyup事件不會受影響

我們提供的服務有:成都網(wǎng)站設計、成都做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、浮山ssl等。為上千多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的浮山網(wǎng)站制作公司

javascript 為什么這樣會無限遞歸自己,從而造成死循環(huán)并且溢出?

我先來解釋無限遞歸

先舉一個生活中的例子,就是那個經(jīng)典的《老和尚給小和尚講故事》的故事:

從前有座山,山里有個廟,廟里有個老和尚給小和尚講故事。

講的是什么故事呢?

講的是:

從前有座山,山里有個廟……

這就是無限遞歸了。

再來說一下你的程序發(fā)生無限遞歸的原因:

ajQuery?是一個函數(shù)。執(zhí)行這個函數(shù)時,函數(shù)中的?return?語句會返回一個值。

它會返回什么值呢?

返回值是執(zhí)行一個新的?ajQuery?函數(shù)的返回值,

那么這個新的?ajQuery?函數(shù)會返回什么值呢?

這個新的?ajQuery?函數(shù)會返回又一個新的?ajQuery?函數(shù)的返回值,

……

這是無限遞歸,也是一種死循環(huán)。

最后說一下發(fā)生溢出的原因:

每次執(zhí)行?ajQuery?函數(shù),

都會在結束前執(zhí)行又一個新的?ajQuery?函數(shù),

并等待它結束,然后自身才能結束。

每執(zhí)行一個函數(shù)都要占用一些資源,只有函數(shù)結束后才有可能釋放這些資源。

可是,在無限遞歸過程中,不斷地執(zhí)行一個又一個函數(shù),卻從不結束這些函數(shù)。

所以,占用的資源就會越來越多。

直到占用的資源超出了允許的范圍,就溢出了!

JavaScript 左移位溢出問題:255

JS 左移結果是一個有符號的32位整數(shù),255本身占了8位,左移24位就溢出了

可以參考這個:

javaScript heap out of memory,怎么解決

這是堆棧溢出錯誤。

可能的原因及解決辦法:

1、查看代碼是否有死循環(huán)、是否有無法結束的函數(shù)調(diào)用或遞歸調(diào)用。

2、也有可能是網(wǎng)頁上含有病毒腳本,對瀏覽器進行了堆棧溢出攻擊,要殺毒處理。

3、瀏覽器打開網(wǎng)頁過多,導致堆棧耗盡或瀏覽器由于其它原因奔潰了,重啟瀏覽器試試。

4、重啟系統(tǒng)試試。

5、最壞情況,重裝瀏覽器或系統(tǒng)試試。

怎樣避免JavaScript中過長遞歸導致的堆棧溢出

遞歸最容易導致的問題就是堆棧溢出了,一般來說操作系統(tǒng)給一個進程劃分的棧內(nèi)存是2M(好像是),按照正常的程序處理,局部變量進棧出棧,棧不太可能會溢出,但是遞歸會導致不會出棧,這就有可能導致堆棧溢出,你這里定義兩個int型變量,即8字節(jié),再加上保存的函數(shù)地址等信息,*100000次遞歸,還有一些其他的入棧的局部變量,可能已經(jīng)超出了最大的??臻g,所以溢出。


分享文章:javascript溢出,js堆棧溢出
文章分享:http://weahome.cn/article/dsdpegj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部