메뉴 건너뛰기

조회 수 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 18275
263 a<<b가 뭔가요? 1 2020.07.01 103
262 예제 9-18번 질문 1 초보 2020.06.21 84
261 선 색 변경이 안됩니다 1 모르겠어요 2020.06.19 199
260 11장 실습문제 4번 1 웹프 2020.06.17 456
259 궁금한점이 있습니다. 1 hayio 2020.06.17 80
258 11장 실습문제 7번 응용 ㅇㅇ 2020.06.16 154
257 6장 오픈챌린지 1 이민수 2020.06.15 232
256 6장4번 1 이민수 2020.06.15 135
255 6장 7번 1 이민수 2020.06.15 215
254 6장 7번 좀 알려주세요 ㅜㅜ 1 어려워여 2020.06.14 589
253 예제 7-6 에서 응용을 하고 싶어서 여쭙고 싶습니다. 1 file 배우고 익히는 초심자 2020.06.14 245
252 13-7 예제 1 궁금이 2020.06.14 146
251 선생님 재질문 드립니다. 1 file 입문한 사람 2020.06.12 150
250 12장 연습문제 4번 HTML 요청 1 file 윤세아 2020.06.10 641
249 setTimeout 질문드립니다. 3 file 웹프공부중 2020.06.09 130
248 스크립트에서 document.write로 표 만들기 질문드립니다. 1 file 입문한 사람 2020.06.08 1108
247 실습문제 1 키보드 향기 2020.06.07 120
246 6단원 실습문제 관련 질문합니다. 1 질문 2020.06.06 110
» 예제 6-24관련 질문드립니다. 3 초보 2020.06.05 67
244 질문드립니다. 1 ㅇㅇ 2020.06.03 306
목록
Board Pagination Prev 1 ... 3 4 5 6 7 8 9 10 11 12 ... 21 Next
/ 21
위로