Maison >interface Web >js tutoriel >Comment corriger les erreurs « Taille maximale de la pile d'appels dépassée » et « JS : délai d'expiration dépassé » dans Safari ?

Comment corriger les erreurs « Taille maximale de la pile d'appels dépassée » et « JS : délai d'expiration dépassé » dans Safari ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-14 14:19:10462parcourir

How to Fix

Résolution des erreurs « Taille maximale de la pile d'appels dépassée » et « JS : délai d'expiration dépassé »

Lorsque vous rencontrez la « Taille maximale de la pile d'appels dépassée » " erreur dans Safari, cela signifie que votre code contient un nombre excessif d'appels de fonctions imbriquées. Ce problème peut empêcher la poursuite du traitement et entraîner un arrêt complet de l'exécution. Dans le navigateur iPad Safari, cette erreur peut se manifester par "JS : l'exécution a dépassé le délai d'attente."

Comprendre l'erreur

La pile d'appels est un espace mémoire qui stocke des informations à propos des appels de fonction. Chaque fois qu'une fonction est appelée, un nouveau cadre de pile est créé. Si la pile atteint sa taille maximale, comme cela peut être le cas en cas d'imbrication excessive, l'erreur est déclenchée.

Correction pour le navigateur Safari

Pour résoudre ce problème, assurez-vous que vos fonctions récursives ont un cas de base clair. Un cas de base est une condition qui, lorsqu'elle est remplie, arrête l'appel récursif et déroule efficacement la pile.

Par exemple, considérons la fonction récursive suivante :

function a() {
    a();
}

Ce code déclenchera le erreur car il n’y a pas de cas de base pour arrêter la récursion. Pour y remédier, on peut ajouter un cas de base qui vérifie si la fonction a été appelée un certain nombre de fois ou si une condition particulière a été remplie :

function a(x) {
    if (x > 10) {
        return;
    }
    a(--x);
}

Dans ce code mis à jour, le cas de base est lorsque x est supérieur à 10, garantissant que l'appel récursif ne dépassera pas la taille maximale de la pile.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn