let i = 0;
while (i<3) {
alert(i);
i++;
}
do.. while
문법을 사용하면 condition
을 반복문 본문 아래로 옮길 수 있다.
do{
//반복문 본문
} while (condition);
let i = 0;
do {
alert(i);
i++;
} while (i<3);
do..while
문법은 조건이 truthy 인지 아닌지 상관없이, 본문을 최소한 한번 이라도 실행하고 싶을 때만 사용해야 한다. 대다수상황은 기본문 법 사용하는게 적합하다.
for ( begin; condition; step) {
// 반복문 본문
}
for (let i=0; i<3; i ++) {
alert(i);
}
for
문의 구성 요소를 생략하는 것도 가능하다.
let i = 0;
for (; i<3; i++){ // begin 생략
alert(i);
}
let i =0;
for (; i<3 ;) { // step도 생략 가능
alert(i++);
}
구성요소를 생략할 때 주의할 점은 두개의 ;
을 꼭 넣어줘야 한다. 하나라도 없으면 문법 에러가 발생.
여러 개의 중첩 반복문을 한 번에 빠져나와야 하는 경우에 사용
outer : for (let i=0; i<3; i++) {
for (let j=0; j<3; j++{
let input = prompt('(${i},${j})의 값', '');
if (!input) break outer;
}
}
alert('완료!');
위의 코드에서 break outer는 outer라는 레이블이 붙은 반복문을 찾고, 해당 반복문을 빠져나오게 해준다.
복수의 if
조건문은 switch
문으로 바꿀 수 있다.
switch
문을 사용한 비교법은 특정 변수를 다양한 상황에서 비교할 수 있게 해준다. 코드 자체가 비교 상황을 잘 설명한다는 장점도 있다.
switch
문은 하나 이상의 case
문으로 구성된다. default
문도 있지만 필수는 아니다.
swtich(x){
case 'value1':
...
[break]
case 'value2':
...
[break]
default:
...
[break]
}
x
의 값과 첫 번째 case
문의 값 'value1'
을 일치 비교한 후, 두번째 case
문의 'value2'
와 비교. 이런 과정으로 계속 이어진다.case
문의 아래의 코드가 실행된다. 이 때, break
문을 만나거나 swtich
문이 끝나면 코드의 실행도 멈춘다.case
문이 없다면, default
문 아래의 코드가 실행된다(default
문이 있을 경우)case
문 안에 break
문이 없으면 조건에 부합하는지 여부 따지지 않고 이어지는 case
문을 실행한다 코드가 같은 case
문은 한데 묶을 수 있다.
let a = 3;
switch (a) {
case 4:
alert('계산이 맞습니다!');
break;
case 3: // (*) 두 case문을 묶음
case 5:
alert('계산이 틀립니다!');
alert("수학 수업을 다시 들어보는걸 권유 드립니다.");
break;
default:
alert('계산 결과가 이상하네요.');
}
위 예시에서 case 3
이 참인 경우 * 표시한 줄 아래 코드가 실행 되는데, 그 아래 줄에 break
가 없고 case5
가 있기 때문에 break
를 만날때 까지 코드는 실행이 된다.
swtich문은 일치 비교로 조건을 확인한다. 비교하려는 값과 case
문의 값의 형과 값이 같아야 해당 case
문이 실행이 된다.
prompt를 통해 입력이 된 값들은 문자열로 저장이 되므로 주의하자!