Isu limpahan tindanan Javascript sisi klien, terutamanya yang lazim dalam IE, boleh timbul daripada saiz tindanan terhad penyemak imbas berbanding dengan pelayar lain seperti Firefox atau Chrome. Had ini boleh menyebabkan fungsi terputus semasa pelaksanaan kerana ruang tindanan tidak mencukupi.
Untuk menggambarkan had saiz tindanan, pertimbangkan kod berikut:
<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>
Apabila dilaksanakan dalam IE, kod ini meningkat pengecualian limpahan tindanan sekitar i = 3200, manakala penyemak imbas seperti Chrome dan Firefox boleh mengendalikan rekursi yang jauh lebih mendalam.
Untuk mengenal pasti fungsi yang bertanggungjawab untuk limpahan tindanan dan mendapatkan surih tindanan, ujian mudah boleh dilakukan:
<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>
Ujian ini secara berperingkat memanggil fungsi inc sehingga limpahan tindanan berlaku. Dengan mengelog nilai i apabila pengecualian ditangkap, saiz tindanan maksimum boleh ditentukan.
Atas ialah kandungan terperinci Bagaimanakah Saiz Tindanan JavaScript Penyemak Imbas Mengehadkan Pelaksanaan Fungsi Impak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!