Javascript에서 undefined 오류를 피하며 재귀호출하는 방법

Javascript를 파일로 만들어 사용 할 때 HTML문서가 로딩되고 바로 실행하는 함수가 있을 경우 .js 파일이 로딩 되기 전에 함수가 실행되면 undefined 오류가 발생합니다.

이를 피하기 위해서 jQuery에서는 $(document).ready(function(){ … }); 을 사용하는데요. $(document).ready()메소드를 사용하지 않는 경우에 아래와 같이 사용하시면 좋습니다.

(function(){
try{$(‘body’).translate(‘korean’);}
catch(err){setTimeout(arguments.callee);}
})();

위 예제는 웹사이트 한글 번역기라는 글에 적혀 있는 예제의 일부분입니다.

소스를 보면 try{} catch{}구문을 이용하여 “$(‘body’).translate(‘korean’);”를 해야 하는데 오류가 생길 경우 catch 부분이 실행되게 되어 있습니다. 여기서 재미난 동작을 하게 됩니다. catch 부분을 보면 arguments.callee 라는 것이 있습니다. arguments.callee는 실행하고 있는 함수를 저정합니다. 즉 자기 자신이 됩니다. 자기 자신을 다시 실행하기 때문에 재귀호출이 되는것이죠. try문을 사용하기때문에 오류가 발생해도 오류보고 없이 다시 실행하게 됩니다. setTimeout()을 사용하는 이유는 일정 간격을 두기 위함인데 예제에서는 시간이 빠져 있을 뿐입니다.

Advertisements

Published by: benant

WEB PROGRAMMER. PHP, ASP, XML, Javascript, VBScript, PL/SQL, MySQL, Oracle. scrollads.co.kr 새로운 모바일 광고 서비스. trenue.com 시스탬 트래이딩 서비스. blogman.co.kr 블로그 운영 관리 서비스. creget.co.kr 해외 상품 구매대행. 핫딜 정보 제공 서비스. fgshop.co.kr - 독립형 쇼핑몰 솔루션.

Categories Web태그, , 댓글 남기기

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중