메뉴 건너뛰기

조회 수 67 댓글 3

구구단 출력 함수를 만드는 예제인데, 해당 예제 중에서 함수를 선언하는 부분에 궁금함이 있어 질문합니다.

function dan(n) {
        var m=parseInt(n);
        if(isNaN(m) || m<1 || m>9) {
            alert("잘못입력하셨습니다.");
            return;

에서, m이 문자열이거나 1보다 작거나 9보다 큰 경우 경고창이 뜨고, return이 사용되었습니다.

왜 return함수를 사용하였나요?

return함수를 빼고 실행해보니, 예를 들어 숫자 33을 넣었더니 경고창이 뜨지만 함수가 계속 실행되어 화면에 33단이 출력되었습니다.

따라서 return이 멈추는 기능이라는 것을 알겠는데, 왜 그렇게 쓰이는 것인가요?

질문이 두서없이 진행되었는데 양해부탁드립니다.

감사합니다.

?
  • ?
    관리자 2020.06.06 15:13
    1. 이문제는 1~9단까지 구구단을 출력하는 것입니다.
    그래서 if 문에서는 m이 문자열이거나 1보다 작거나 9보다 큰 경우 if 문 아래의 코드가 실행되지 않도록 합니다.
    return 문을 이용하여 dan 함수를 종료하고 빠져나가도록 하였지요.

    m이 숫자 33이라면 당연히 이 문제의 목적에 벗어나기 때문에 33단이 출력되지 않게 해야 하겠지요.
    뿐만 아니라 m이 숫자가 아닌 경우에도 만일 return을 하지 않는다면 이상한 결과가 출력되는 등 문제가 발생합니다.

    2. return 문은 정확히 함수를 종료하고 함수를 호출한 곳으로 돌아가라는 코드입니다. 자바스크립트 엔진이 return 문을 실행하면 dan 함수의 실행을 중단하고 dan 함수를 호출한 곳으로 돌아가서
    더 이상 코드가 없으면 그냥 자바스크립트 코드 전체의 실행이 종료되는 것입니다.
    return 문으 '멈추라는 기능'으로 해석하는 것은 부분적으로 의미가 있지만, 본질적인 의미는 아닙니다.

    3. 좀 어려운 이야기지만, 이 예제에서 dan 함수를 사용하지 않았다면 m이 문자열이거나 1보다 작거나 9보다 큰 경우 를 걸러내지 못할 것입니다.
    왜냐하면 m이 문자열이거나 1보다 작거나 9보다 큰 경우에 더 이상 실행을 중지시킬 수 있는 방법이 없기 때문입니다.

    설명이 부족하거나 더 이해가 필요하면 그때 좀 더 구체적으로 물으면 답해드리겠습니다.
  • ?
    초보 2020.06.07 14:32
    답변 3 관련해서 질문합니다.

    1. 함수dan을 만들지 않을 경우 return 함수를 사용하지 못하기 때문에 실행을 중지할 수 있는 방법이 없다는 것인가요?
    2. 만약 <body>에서 if문을 사용하고,
    if(isNaN(m) || m<1 || m>9) {
    alert("잘못입력하셨습니다.");
    break;
    와 같이 break를 사용할 수는 없는건가요?
  • ?
    관리자 2020.06.07 16:22

    1. 그렇습니다. 함수를 사용하지 않으면 중단시킬 수 없지요.

    2.  함수내에서 break;의 사용은 문법적으로 전혀 맞지 않습니다.

    break; 사용되는 곳은 2경우입니다.

    1) 다음과 같이 for, while 문의 반복에서 빠져나오는 경우이고,

    for( ) {

     ...

    break;

    ..

    }

     

    2) switch문의 case에서 switch 전체를 빠져나오는 경우

    switch(n) {

    case 1: ... break;

    ..

    }

     

    이 두 경우가 아닌 상황에서 break;를 사용하면 그것은 오류로 처리되어 프로그램의 실행이 바로 중단됩니다.

    함수 내에서 함수의 실행을 종료하고 호출한 곳으로 돌아가는 코드는 return입니다. return 자리에 break를 사용하면 문법 오류로 처리하여 자바스크립트 엔진은 

    자바스크립트 프로그램의 실행을 그냥 중단해버립니다.

     

    둘 다 이 책에 설명이 되어 있으니 읽어보세요.

     


QnA

공부하면서 궁금했던 것을 질문해보세요.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 읽어주세요! 연습문제 및 실습문제 정답 공개에 관한 공지입니다. file 관리자 2017.06.20 18266
363 이미지파일 6 스물다섯 2022.04.08 111
362 4장 171쪽 2 chu 2022.04.04 57
361 html5 태그 검사 2 열공이 2022.03.10 94
360 2장 실습문제 1번 질문드립니다! 1 망나뇽 2022.03.06 169
359 안녕하세요 관리자님 실습 문제 짝수본 zip 파일은 제공 되지 않는 건가요? 1 문의 2022.02.25 210
358 r/w는 무슨 뜻인가요? 1 ㅇㅁㅇㅈ 2021.12.22 392
357 웹 워커 13-7 결과 55가 출력되지 않습니다. 1 chg115 2021.12.03 101
356 연습문제의 미디어 파일 1 부산 2021.11.25 133
355 document.getElementBy~ 2 tc0712 2021.11.22 108
354 윈도우 브라우저와 윈도우 탭 2 tc0712 2021.11.22 57
353 5장 내용 중 궁금한 점 있습니다! 1 file 2021.10.15 215
352 5장 5-(2) 질문 있습니다! 1 2021.10.14 117
351 form 태그와 웹서버 1 tc0712 2021.09.29 103
350 HTML5+CSS3+Javascript 웹 프로그래밍[수정판] 4 file Jenny 2021.09.25 516
349 웹서버와 클라이언트 2 tc0712 2021.09.14 95
348 URL 과 IP 주소 2 tc0712 2021.09.14 120
347 태그와 속성 2 tc0712 2021.09.08 72
346 캔버스 관련 질문 1 원그리기 2021.08.22 101
345 웹 사이트 접속 질문 있습니다. 1 초심자 2021.08.21 131
344 질문 있습니다. 2 2021.08.19 134
목록
Board Pagination Prev 1 ... 2 3 4 5 6 7 8 9 10 ... 21 Next
/ 21
위로