[JS](해결✅) return / break 의 차이?_ 소수 구하기예제

하서율·2022년 6월 26일
0

이해불가

목록 보기
1/2
post-thumbnail

예제: 사용자가 입력하는 숫자가 소수(prime)인지 아닌지 알려주는 프로그램 만들기 _ HTML + JS 사용.

이해되지 않는 이유: break / return의 위치에 따라 결과가 달라지는데 이유를 모르겠다.


<정답코드>

HTML

<h1>소수판별 프로그램입니다.</h1>
입력할 숫자 : <input type="text" id="num">
<button onclick = "display()"> 확인</button>
<div>결과: <h3 style="display:inline" id="result"> 숫자를 넣어 주세요. </h3> </div>

JS

function display(){

    var strN = document.getElementById("num").value;
    var result = document.getElementById("result");
    var n = Number(strN);

    for(i = 2; i < n; i++){
        if(n % i === 0){
            result.innerHTML = n + "은(는) 소수가 아닙니다.";
            return ;}  
     
    }
    result.innerHTML = n + "은(는) 소수입니다.";
 }

이해불가🤷‍♀️:

1. return은 함수에만 사용된다고 생각했는데, for문 안에있는 if 에서 사용됨.. 왜!? (해결함⭕️)

▶️ 내 생각🙄:
for 문이 display()함수 안에 있기 때문에 사용가능.

▶️ 해답💡:

함수안에 있는 반복문에서 조건이 만족될때의 값을 반환하면서 함수에서 빠져나올때 return을 쓸수있음.

2. 같은자리에 return 대신 반복문을 빠져나가는 break 를 쓰면 어떤 숫자를 넣어도 모두 소수라고 나옴. 왜?! (해결함⭕️)

▶️ 내 생각🧐:
-return도 반복문을 끝내고 break도 반복문을 빠져나가는데 왜 다른 결과가 나오는거지.
-break도
if조건만족 ➡️ result.innerHTML = n + "은(는) 소수가 아닙니다." 실행 ➡️ 반복문 빠져나옴 ➡️ result.innerHTML = n + "은(는) 소수입니다." 을 실행
아닌가..?

▶️ 해답💡:

break 의 개념을 제대로 이해하지 못하고 있었다.

break: 조건이 맞을때 반복문을 바로 빠져나온다. (if문 안의 명령 실행하지 않음)

그러므로!!
2의 배수(짝수)일때 👉 if(n % i === 0) 조건에 맞기 때문에 반복문(for문)을 빠져나오고 for문 밖의 명령 실행.
2의 배수가 아닐때(홀수) 👉 if(n % i === 0)조건에 맞지 않기때문에 반복문(for문)을 거치지 않고 바로 for문 밖의 명령 실행.

무튼 이래서 어떤 숫자든 모두 for문 밖, 마지막 명령인 result.innerHTML = n + "은(는) 소수입니다를 실행했던것.

3. if문 밖에 (for문의 마지막 '}' 전) return 을 쓰면 홀수가 나왔을때 실행이 되지 않음(짝수일때만 '소수가 아닙니다'가 나옴). 왜?!! (해결함⭕️)

▶️ 내 생각🧐:
-if문 안에 쓰나 for문 마지막에 쓰나 둘다 for문을 빠져나오는건데, 왜 결과가 다를까...
-다른점이라고 하면 if 안에 있을때는 if 문만 빠져나와서 반복문을 계속 실행 시킨다는건데
-그럼 2에서 걸러져 반복문을 빠져나왔을때 마지막
result.innerHTML = n + "은(는) 소수입니다.";
는 왜 실행이 안되는거지 :(

▶️ 해답💡:

return 의 개념을 제대로 이해하지 못했다.
return은 함수를 끝낸다라는 생각만 하고, 값을 반환해 준 후 함수를 끝낸다는 개념을 몰랐다.

그러므로!!
if문 밖에 return을 쓰는경우 👉 if(n % i === 0) 조건에 맞는 2의 배수들은 if문안의 명령이 실행되지만 조건에 맞지않는 그 외의 숫자들은 return을 만나며 바로 함수종료.

만약 return 만 쓰지 않고, result.innerHTML = n + "은(는) 소수입니다."를 함께 써주었다면, 홀수를 입력했을때, return 뒤에 써준 명령이 실행되었을 것임.

4. if문 밖에 (for문의 마지막 '}' 전) break 를 쓰면 모두 소수라고 나옴. 왜?! (해결함⭕️)

▶️ 내 생각🧐:
2번과 마찬가지

▶️ 해답💡:

2번과 동일.




✅ 정리

break과 return 의 개념을 정확히 알았어야했다..

break
▶️ 반복문에서 조건이 충족되면 명령을 실행하지 않고 바로 반복문을 완전히 종료.

return
▶️ 함수안에 있는 반복문에서 조건이 만족될때의 값을 반환하면서 함수에서 빠져나올때 사용.
▶️ return 뒤에 값을 입력하면 그 값을 반환.

profile
매일 매일 기록하기

0개의 댓글