客戶端Javascript 堆疊溢位問題(在IE 中尤其普遍)可能是由於瀏覽器的堆疊大小有限而引起的其他瀏覽器,例如Firefox 或Chrome。由於堆疊空間不足,此限制可能會導致函數在執行期間中斷。
為了說明堆疊大小限制,請考慮以下程式碼:
<code class="html"><script type="text/javascript"> function doSomething() { var i = 3200; doSomethingElse(i); } function doSomethingElse(i) { if (i == 0) return -1; doSomethingElse(i - 1); } doSomething(); </script></code>
在IE 中執行時,此程式碼會引發i = 3200 左右的堆疊溢位異常,而Chrome 和Firefox 等瀏覽器可以處理更深層的遞歸。
要識別導致堆疊溢位的函數並取得堆疊跟踪,可以執行一個簡單的測試:
<code class="javascript">var i = 0; function inc() { i++; inc(); } try { inc(); } catch (e) { // Adjust for the StackOverflow sandbox's additional frame i++; console.log('Maximum stack size is', i, 'in your current browser'); }</code>
此測試增量呼叫 inc 函數,直到發生堆疊溢位。透過記錄捕獲異常時 i 的值,可以確定最大堆疊大小。
以上是瀏覽器 JavaScript 堆疊大小限制如何影響函數執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!