Bagaimanakah Saiz Tindanan JavaScript Penyemak Imbas Mengehadkan Pelaksanaan Fungsi Impak?

DDD
Lepaskan: 2024-10-27 01:50:03
asal
898 orang telah melayarinya

How Does Browser JavaScript Stack Size Limit Impact Function Execution?

Had Saiz Tindanan Javascript Penyemak Imbas: Mendedahkan Kerumitan

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!