최대 호출 스택 크기가 Javascript를 초과했습니다.

| | | | | | | | | | | | | | | | | |

일어났습니다. 약간의 코딩을 하면 콘솔이나 Chrome 개발자 도구에 uncaught rangeerror: 호출 스택의 최대 크기가 초과되었습니다.` 추적 오류가 표시됩니다. 이것이 의미하는 바는 무엇입니까?

재귀 함수를 작성할 때 재귀 호출을 중지하기 위한 기본 사례가 필요합니다. 그렇지 않으면 호출 스택이 소진될 때까지 재귀 함수를 계속 호출합니다. 이것을 무한 루프라고 합니다.

다음은 이 오류를 생성하는 코드의 예입니다.

<입력 유형 = "숨겨진" 이름 = "ck_campaign" 값 = "ft-express-wgt-blog"> <입력 유형 = "숨겨진" 이름 = " 흐름" 값 = "sft"> <버튼 유형 = "제출" id = "제출4" 클래스 = "btn btn-success btn-block 버튼-ajax-form" 스타일 = "배경 색상: # ff9d38 ! 중요한; 테두리 색상: # ff9d38 ; 불투명도: 1; 화이트 색상; 너비: 100%; 글꼴 두께: 굵게; 글꼴 크기: 13px; "> 경기 받기 <스크립트 유형 = "텍스트 / 자바스크립트"> 제이쿼리(`# contactForm2`). submit (function(event) {var phone = jQuery(`# msg_phone`).val(); phone = phone.replace(// $ /, ``) .replace(`+ (`, ``) .replace( `) +`, ``) .replace (``, ``) .replace (`+ -`, ``) .replace (`-`, ``) .replace (`(`, ``) .replace (`)`, ``) .교체(`.`, ``), 전화 = 전화.대체(``, ``), 전화 = 전화 .교체(``, ``), var otherphone = 전화. 부분 문자열 (2); if (otherphone .split (``) .e very (char => char === otherphone [0])) {jQuery (`# error_phone`). show (); 반환 false ; } else { var phoneField = jQuery(`# msg_phone`); phoneField.removeAttr("최대 길이"); phoneField.removeAttr("스키마"); phoneField.val(전화); 반환 true; }})

코드 블록에 멈출 장소를 제공해야 합니다. 이렇게 하려면 함수의 "기본 사례"가 될 조건문을 추가해야 합니다. 이것은 재귀의 중지를 신호합니다.

재귀 함수를 사용하려는 경우 기본 케이스를 재귀 함수에 추가하는 것을 잊지 마십시오. 이렇게 하면 이와 같은 실수를 방지할 수 있습니다!