본문 바로가기

Development/Javascript

리턴[return]문을 조금 정리해 보았습니다.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

글의 고유코드 : 24 글쓴이 : 최용기

http://www.taeyo.pe.kr/threadboard/Content.asp?table=Board_Knowhow&seqs=24&page=4

Return is???

javascript는 c 와 거의 유사해서 Return 문의 역활 또한 같습니다.
예전에 c 를 공부한 적이 있으신 분들은 이미 알고 있을 것이고,
c 를 배우지 않은 개발자라면 이 기회에 살짝 입맛이라도 경험을 해보시길 바랍니다.

javascript 의 return 문은 크게 2가지의 역활을 합니다..
*. function 내의 임의의 지점에서 function의 실행을 강제로 종료시키는 역활
if 문이든 for문이든 어떤 구문이든지 간에 function 자체를 탈출할 때 쓰입니다. 간단히 예를 들면,
회원 가입하는 form에서 서버로 전송하기 전에 javascript를 통해 유효성 검사를 할 때 주로 쓰입니다.

*. 값을 return해주는 역활을 합니다.
function 내에서 또다른 function 을 호출하고서 다시 값을 받을 경우입니다.
간단히 예를 들면, 계산기 기능의 스크립트를 짠다면 일정한 기능을 하는 function을 먼저 만들어 놓고
+,-,*,/ 에 의해서 function을 구분해 놓거나, event에 의해서 구분해 놓으면, 간단히 작업할 수 있을것입니
다.

Return문 아주 유용하다 할수 있겠죠...

하지만 return문을 이해하지 못하고 마구 사용하다 보면 만나지 말아도 될 메시지를 만나게 됩니다.
아무 쓸모없이 return false or return true 해주는 경우가 있습니다.

예를 들면,
갑자기 하얀 바탕에 단순히 false or true 만 덩그렇게 찍혀 있는 광경을..
혹시 경험 해보셨는지요...해결하는 데 시간좀 걸리셨죠...^^;.
return 받을 값도 없으면서 무조건 넘기니깐...그렇습니다. 그럴 땐..
과감히 false or true를 삭제하시면 간단히 해결이 됩니다.

그렇다면 form 전송할 때, return false; 와 return ture; 의 차이점이 무엇이냐...???

submit or image tag를 사용하여 form 전송할 때 분명히..
return false; 를 주었다.
그런데, 왜 멈추지 않고 전송이 되느냐?..
이유가 뭐냐..궁금하다. 난 잘못한 게 없다. 참고로..현재 나는 매우 급하다.

이럴 경우 가장 간단한 방법은 href 로 스크립트를 호출하면 간단하게 해결됩니다.
이유는 submit or image tag는 호출된 page로 무조건 전송시켜 버리기 때문입니다.

그렇다면 방법이 없는 것이냐?
그렇지는 않습니다.

function SubScript() 소스 내에서
document.FormName.submit(); // script 내에서 form 전송하는 부분이죠.
이 부분을 삭제하시고 return true; 를 삽입합니다.
그리고, 스크립트를 호출하시던 부분에서는
<form onSubmit="javascript:return SubScript();">
이처럼 해주시면 됩니다. 이해가 되시는 지요.

이해가 되지 않으신다구요...그럼 소스를 보면서 알아보도록 하겠습니다.
빨간색을 주의깊게 보세요...

<html>
<head><title>Return Test</title>
<script language="javascript">
<!--
function SubScript(){
if(document.TestForm.UserName.value == ""){
alert("이름을 입력해 주십시요");
document.TestForm.UserName.focus();
return false;
}
if(document.TestForm.Subject.value == ""){
alert("학과를 입력해 주십시요");
document.TestForm.Subject.focus();
return false;
}
file://document.FormName.submit(); <-- 이렇게 적으시려면 href 로 처리하시는 편이 좋겠죠;
return true;
}
// -->
/*
스크립트 내에 <!-- file://--> 주석을 처리하는 이유는 버젼이 낮은 브라우져에서 javascript를 인식 못할 경우
를 우려해서 입니다.
하지만, 요즘은 뭐 거의 사용하지 않으셔도 됩니다. 전 버릇이 들어서요.^^;
*/
</script>
<body>
<form name="TestForm" action="a.html" onSubmit="javascript:return SubScript();">
이름 : <input name="UserName"><br>
학과 : <input name="Subject"><br>
<input type=submit name=TestSubmit value=눌러주세요>
</form>
</body>
</html>

위의 소스가 이해가 되시는지요. 안되면 될 때까지 봅니다. [주입식 교육과 반복학습] 언제나 강조합니다.
앞으로 폼 전송하실때는 위처럼 하시면 javascript check 후에 문제는 해결될 듯 합니다.
button or href 일 경우 여러가지가 있지만 일단 그 부분은 문제를 많이 일으키지 않으므로 뺐습니다^^;...

물론 위의 방법이 최선의 방법이라고 생각하지 않습니다. 저도 같은 개발자로서 더 많은 지적을 부탁드립니
다.