이해되지 않는 이유: break / return의 위치에 따라 결과가 달라지는데 이유를 모르겠다.
<h1>소수판별 프로그램입니다.</h1>
입력할 숫자 : <input type="text" id="num">
<button onclick = "display()"> 확인</button>
<div>결과: <h3 style="display:inline" id="result"> 숫자를 넣어 주세요. </h3> </div>
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 + "은(는) 소수입니다.";
}
▶️ 내 생각🙄:
for 문이 display()함수 안에 있기 때문에 사용가능.
함수안에 있는 반복문에서 조건이 만족될때의 값을 반환하면서 함수에서 빠져나올때 return을 쓸수있음.
▶️ 내 생각🧐:
-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 + "은(는) 소수입니다를 실행했던것.
▶️ 내 생각🧐:
-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 뒤에 써준 명령이 실행되었을 것임.
▶️ 내 생각🧐:
2번과 마찬가지
2번과 동일.
break과 return 의 개념을 정확히 알았어야했다..
break
▶️ 반복문에서 조건이 충족되면 명령을 실행하지 않고 바로 반복문을 완전히 종료.
return
▶️ 함수안에 있는 반복문에서 조건이 만족될때의 값을 반환하면서 함수에서 빠져나올때 사용.
▶️ return 뒤에 값을 입력하면 그 값을 반환.