這篇文章主要介紹javascript中快應用發生堆棧溢出怎么辦,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
一段簡短的代碼片段,描述了 $element('id') 被分配給成員變量并發生堆棧溢出的問題,以及修復它的解決方案。
將通過獲取的內容$element('id')
賦值給成員變量時,RangeError: Maximum call stack size exceeded
可能會發生棧溢出(),導致程序崩潰。如果某個 DOM 存在成員變量引用,并且成員變量發生變化,也會發生堆棧溢出。示例代碼如下: <template>
<template> <div id="content"> <input type="button" class="button" @click="onTestClick" value="Stack overflow occurs."/> <text>{{ stateText }}</text> </div></template><script> export default { private: { mContentNode: null, stateText: 'init state' }, onReady() { /* When data obtained by $element('id') is assigned to a member variable, a stack overflow may occur. */ this.mContentNode = this.$element('content') }, onTestClick() { /* To reproduce this problem, change a member variable when member variable references exist for a DOM. */ this.stateText = 'new state' } }</script>
原因是賦值會導致海量的數據變化。從而導致內部異常循環,導致棧溢出。
為了防止堆棧溢出,你可以將通過獲取的數據分配給$element('id')
局部或全局變量而不是成員變量。示例代碼如下:
<script>
let $gContentNode = null
export default {
private: {
stateText: 'init state'
},
onReady() {
/* You can assign the data obtained through $element('id') to a local or global variable to prevent the stack overflow. */
const cContentNode = this.$element('content')
$gContentNode = this.$element('content')
},
onTestClick() {
this.stateText = 'new state'
}
}
</script>
以上是“javascript中快應用發生堆棧溢出怎么辦”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。