[쥔장]=========================================
객체가 없거나 값이 잘못세팅되거나 하는 등의 경우 undefined 라는 alert 메시지를 보게 된다.
undefined 에 대한 처리를 본다.
정리를 해보자.
===============================================

<form name="frm">
<input id="txtA" name="txtA" value="12345">
<input id="txtB" name="txtB" value="67890">
<a href="javascript:chkCtrl();">check control</a>
</form>

이러한 웹 html 코드가 있다라고 하자.

document.frm.txtA 에 대한 객체의 값을 얻고자 anchor를 클릭하여 chkCtrl() 함수를 호출하여
alert( document.frm.txtA.value );
로 메시지를 보면 "12345" 가 정상적으로 출력된다.

function chkCtrl()
{
    alert( document.frm.txtA.value );
    return;
}

하지만 어떠한 조건에 의해
txtA 컨트롤을 보여지고 안보여지고 할 경우 문제가 발생한다.
안보여지면..

<form name="frm">

<input id="txtB" name="txtB" value="67890">
<a href="javascript:chkCtrl();">check control</a>
</form>

요렇게 되겠지..

해서 txtA 컨트롤이 정상인지 아닌지를 체크하여본다.

if( typeof(document.frm.txtA) == "undefined" )
{
    alert("txtA 컨트롤이 정의되지 않았습니다.");
    return;
}

이런 식으로 처리가 가능하다.

또 하나의 다른 방법으로는 굳이 typeof() 를 쓰지않고

if( document.frm.txtA == undefined )

와 같은 형태이다.

잘보면 typeof() 는 쌍따옴표로 묶었고, typeof() 쓰지 않으면 쌍따옴표로 묶지 않는다.

undefined 라는 것이 많이 발생하는 문제이지만
진단을 잘 해서 잘 처리해보자.

자바스크립트의 에러 예외처리를 추가적으로 확인해본다.
아주 간단히 ^^

try
{
    // statement
}
catch(err)
{
    alert("에러가 발생했어요 : \n" + err.description);
    return;
}

위와 같이만 하면 무슨 에러가 났는지 잡을 수 있으니 참고하도록 한다.
보통 자바스크립트에서는 try ~ catch 문을 잘 사용하지 않지만 개발하면서는 유용하니 잘 활용하자.
나 역시도 잘 쓰지 않지만 에러 잡기가 애매하면 쓴다.
하지만 javascript 라고 무시하지 말고 try~catch 문을 사용하는 편이 좋을 것임.



참고사이트 1 : http://msdn.microsoft.com/en-us/library/xy4ydx22
참고사이트 2 : http://blog.naver.com/zike8/120063094500


[출처] 본인