오늘까지 기본 문법들을 정리해야겠다.
condition(조건)이 truthy
이면 반복문 본문의 코드가 실행됩니다.
👉 condition
이 falsy
되면 반복문이 멈춘다.
while (condition) {
// 코드
// '반복문 본문(body)'이라 불림
}
condition이 반복문 본문 아래로 간다.
조건이 truthy인 동안엔 본문이 계속 실행된다 .condition
이 falsy
되면 반복문이 멈춘다.
본문이 무조건 한번은 실행된다.
do {
// 반복문 본문
} while (condition);
//while문 뒤에 세미콜론(;)이 붙는다.
⚠️ while문 뒤에 세미콜론(;)이 붙는다.
for (begin; condition; step) {
// ... 반복문 본문 ...
}
begin
→ condition
→ body
→ step
→ condition
begin
: 반복문에 진입할 때 단 한 번 실행됩니다.
condition
: 반복마다 해당 조건이 확인됩니다. false이면 반복문을 멈춥니다.
body
: condition이 truthy일 동안 계속해서 실행됩니다.
step
: 각 반복의 body가 실행된 이후에 실행됩니다.
forjs (let i = 0; i < 3; i++) {
alert(i); // 0, 1, 2
}
alert(i); // i는 반복문 안에서만 접근할 수 있습니다.Error: i is not defined
⚠️ 생략해도 세미콜른;
은 생략해서는 안된다. (오류 발생)
for (;;) {
// 끊임 없이 본문이 실행됩니다.
}
break
: 반복문 탈출문
반복문 하나만 탈출이 가능하다.
➕ 무한 반복문 + break
: 반복문의 시작 지점이나 끝 지점에서 조건을 확인하는 것이 아니라 본문 가운데 혹은 본문 여러 곳에서 조건을 확인해야 하는 경우에 적절하다.
continue
: 현재 실행준인 반복에서 다음 반복으로 넘어가게 한다.
⚠️?
에는 break나 continue를 사용할 수 없다.
표현식이 아닌 문법구조는 삼항연산자 ?
에 사용할 수 없다.
반복문에 이름을 붙이는 것이다.
규칙
1.레이블은 반드시 break이나 continue 지시자 전에 있어야 합니다.
2.레이블 선언방법
//가능
outer : for(...
//가능
outer :
for(...
break <labelName>
문을 사용하면 레이블에 해당하는 반복문을 빠져나올 수 있습니다.
outer: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
let input = prompt(`(${i},${j})의 값`, '');
// 사용자가 아무것도 입력하지 않거나 Cancel 버튼을 누르면 두 반복문 모두를 빠져나옵니다.
if (!input) break outer; // (*)
// 입력받은 값을 가지고 무언가를 함
}
}
alert('완료!');
continue<labelName>
을 사용하면 레이블이 붙은 반복문의 다음 반복이 실행된다.
사용자가 100보다 큰 숫자를 입력하도록 안내하는 프롬프트 창을 띄워보세요.
사용자가 조건에 맞지 않은 값을 입력한 경우 반복문을 사용해 동일한 프롬프트 창을 띄워줍시다.
사용자가 100을 초과하는 숫자를 입력하거나 취소 버튼을 누른 경우, 혹은 아무것도 입력하지 않고 확인 버튼을 누른 경우엔 더는 프롬프트 창을 띄워주지 않아도 됩니다.
사용자가 오직 숫자만 입력한다고 가정하고 답안을 작성하도록 해봅시다.
숫자가 아닌 값이 입력되는 예외 상황은 처리하지 않아도 됩니다.
while(1){
let anser = prompt("100보다 큰 숫자 입력");
if(anser > 100){
alert(anser);
break;
}else if(anser == "" || anser == null){
break;
}else {
alert(anser);
continue;
}
}
null
인 경우null
도 아닌 경우&&
을 사용)num <= 100 && num != null && num != ""
num <= 100 && num
let num;
do {
num = prompt("100을 초과하는 숫자를 입력해주세요.", 0);
} while (num <= 100 && num); //num은 num이 비어있는 문자인가 확인 하는 것, null이나 0은 falsy
let anser = prompt("숫자 입력");
for (let i = 2; i <= +anser; i++){
for(let j = 2; j <= i; j++ ){
if(i%j == 0 && j != i){
break;
} else if (j == i){
alert(i);
}
}
}
let n = prompt("숫자 입력");
nextPrime:
for (let i = 2; i <= n; i++) { // 각 i에 대하여 반복문을 돌림
for (let j = 2; j < i; j++) { // 제수(나눗수)를 찾음
if (i % j == 0) continue nextPrime; // 소수가 아니므로 다음 i로 넘어감
}
alert( i ); // 소수
}