Menyelesaikan masalah Isu Limpahan Timbunan Javascript dalam IE
Ralat limpahan tindanan dalam Javascript boleh mengecewakan, terutamanya apabila menghadapi tingkah laku yang tidak dapat diramalkan dalam perpustakaan pihak ketiga . Penyemak imbas IE mempunyai had tindanan yang sangat rendah berbanding penyemak imbas lain, seperti yang ditunjukkan oleh skrip ujian ringkas yang mendedahkan had tindanan sekitar 3200 dalam IE8.
Untuk mengenal pasti sumber limpahan tindanan, adalah penting untuk mengesan rangkaian panggilan fungsi yang membawa kepada pengecualian. Malangnya, JavaScript tidak menyediakan sokongan asli untuk jejak tindanan terperinci, menjadikannya mencabar untuk menentukan fungsi penyebabnya. Walau bagaimanapun, terdapat teknik untuk mendapatkan maklumat terhad tentang fungsi yang menimbulkan pengecualian.
Satu pendekatan melibatkan pengubahsuaian skrip ujian untuk mengira bilangan kali fungsi rekursif dipanggil sebelum mencetuskan limpahan tindanan. Dengan menambah kiraan secara manual dalam blok tangkapan, kami boleh menganggarkan kedalaman tindanan maksimum untuk penyemak imbas semasa:
<code class="js">var i = 0; function inc() { i++; inc(); } try { inc(); } catch(e) { // The StackOverflow sandbox adds one frame that is not being counted by this code // Incrementing once manually i++; console.log('Maximum stack size is', i, 'in your current browser'); }</code>
Kaedah ini memberikan anggaran kasar kedalaman tindanan tempat limpahan berlaku. Adalah penting untuk ambil perhatian bahawa penyemak imbas yang berbeza mungkin melaporkan kedalaman tindanan yang berbeza sedikit disebabkan oleh pengoptimuman dan konfigurasi dalaman.
Atas ialah kandungan terperinci Bagaimana untuk Mengenalpasti dan Menyelesaikan Masalah Javascript Stack Overflow Ralat dalam IE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!