2014-01-23 7 views
0

중첩 : "catch되지 않은 오류 RangeError 최대 호출 스택의 크기를 초과했습니다"오류 : ": 최대 호출 스택의 크기를 초과 catch되지 않은 오류 RangeError", 나는이 코드로 좁혀했습니다 : 자기 기능에 내가 오류가 계속

//Play Button Checking 
var checker = false; 
var playButton = function(){ 
    if(mouseX > 100 && mouseX > 300 && mouseY > 150 && mouseY < 250 && mouseIsPressed){ 
     checker = true; 
    } else { 
     playButton(); 
    } 
}; 
while(checker===false){ 
    playButton(); 
} 
+0

왜 'while'에서'playButton()'을 호출하고 함수에서 재귀 호출을할까요? –

+1

아마 mouseX <300, mouseX> 300이 아님을 의미합니다. – ooga

답변

1

if 문에있는 마우스 조건이 참이 아니면 함수가 자신을 재귀 적으로 호출합니다. 변수를 업데이트하지 않으므로 함수가 처음 호출 될 때 true가 아니라면 true가됩니다.

이러한 변수를 설정하는 이벤트 처리기가있는 경우 절대로 실행될 수 없습니다. Javascript는 단일 스레드이며 이벤트 핸들러는 코드가 브라우저의 기본 유휴 루프로 돌아갈 때만 실행됩니다.

당신은 사용자가 마우스 버튼을 누를 때 변경 무언가를 원한다면, 당신이 (이 문서에 어디서나 할 수있는 경우 document 요소에 첨부) 해당 요소에 click 또는 mousedown 이벤트 핸들러를 결합한다 .