Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Membetulkan Ralat 'Saiz Timbunan Panggilan Maksimum Melebihi' dan 'JS: Execution Exeeded Timeout' dalam Safari?
Menyelesaikan "Saiz Tindanan Panggilan Maksimum Melebihi" dan Ralat "JS: Execution Exeeded Timeout"
Apabila menghadapi "Saiz tindanan panggilan maksimum melebihi " ralat dalam Safari, ini menandakan bahawa kod anda mempunyai bilangan panggilan fungsi bersarang yang berlebihan. Isu ini boleh menghalang pemprosesan selanjutnya dan mengakibatkan pelaksanaan terhenti sepenuhnya. Dalam penyemak imbas iPad Safari, ralat ini mungkin nyata sebagai "JS: pelaksanaan melebihi tamat masa."
Memahami Ralat
Timbunan panggilan ialah ruang memori yang menyimpan maklumat mengenai panggilan fungsi. Setiap kali fungsi dipanggil, bingkai tindanan baharu dicipta. Jika tindanan mencapai saiz maksimumnya, seperti yang boleh berlaku dalam kes bersarang yang berlebihan, ralat akan dicetuskan.
Betulkan untuk Penyemak Imbas Safari
Untuk menyelesaikan isu ini, pastikan fungsi rekursif anda mempunyai kes asas yang jelas. Kes asas ialah syarat yang, apabila dipenuhi, menghentikan panggilan rekursif dan melepaskan tindanan dengan berkesan.
Sebagai contoh, pertimbangkan fungsi rekursif berikut:
function a() { a(); }
Kod ini akan mencetuskan ralat kerana tiada kes asas untuk menghentikan rekursi. Untuk membetulkannya, kami boleh menambah kes asas yang menyemak sama ada fungsi telah dipanggil beberapa kali atau jika syarat tertentu telah dipenuhi:
function a(x) { if (x > 10) { return; } a(--x); }
Dalam kod yang dikemas kini ini, kes asas ialah apabila x lebih besar daripada 10, memastikan bahawa panggilan rekursif tidak akan melebihi saiz tindanan maksimum.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Saiz Timbunan Panggilan Maksimum Melebihi' dan 'JS: Execution Exeeded Timeout' dalam Safari?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!