[JavaScript] 제어문

박준석·2024년 4월 4일

JavaScript

목록 보기
5/10
post-thumbnail

제어문

프로그램의 순차적인 흐름을 제어해야 할 때 사용하는 실행문을 제어문이라고 한다.

조건문

조건문이란 프로그램 내에서 주어진 표현식의 결과에 따라 별도의 명령을 수행하도록 제어하는 실행문이다.
조건문에서 가장 기본이 되는 실행문은 if이다.
조건문

  • 자바 스크립트 조건문 형태
    • if 문
    • if / else 문
    • if / else if / else 문
    • switch 문

if 문

if 문은 표현식의 결과가 참(true)이면 주어진 실행문을 실행하며, 거짓(false)이면 아무것도 실행하지 않는다.
if문

예를 들어 "오후 6시가 되었나요? 그럼 퇴근하세요." 라는 조건문을 다음과 같이 표현할 수 있다.

let time = 18;

if(time >= 20) {
    console.log("퇴근하세요.");
}

else 문

if 문과 같이 사용할 수 있는 else 문은 if 문의 표현식 결과가 거짓(false)일 때 주어진 실행문을 실행한다.

else

let time = 18;

if(time >= 18) {
    console.log("퇴근하세요.");
} else {
  console.log("일해라");
}

else if 문

else if 문은 if 문처럼 표현식을 설정할 수 있으므로, 중첩된 if문을 좀 더 간결하게 표현할 수 있다. 하나의 조건문 안에서 if문과 else문은 단 한 번만 사용될 수 있다.
else if

let time = 18;

if(time >= 18) {
    console.log("퇴근하세요.");
} else if(time >= 13) {
  console.log("반차입니다~");
} else {
 console.log("일해라"); 
}

🚫 주의할 점
if 문은 어떤 조건에서 참이 결정되면 if문은 종료가 된다.

let time = 18;

if(time >= 13) {
console.log("퇴근하세요.");
} else if(time >= 18) {
console.log("반차입니다~");
} else {
console.log("일해라");
}

위 코드에서 바로 참이 되기 때문에 다른 if문으로 갈 수 없기 때문에 위 예시는 잘 못 된 방법이다.
- ✅
```js
let time = 18;

if(time >= 18) {
    console.log("퇴근하세요.");
} else if(time >= 13) {
  console.log("반차입니다~");
} else {
 console.log("일해라"); 
}

if문을 세울 때 주의 해야하는 것은 조건들의 범위를 잘 설정해 주는것이 좋다.

삼항연산자

자바스크립트에서는 간단한if/else 문을 삼항 연산자를 이용하여 간단히 표현할 수 있다.

// 기존 if 문
let time = 18;

if(time >= 20) {
    console.log("퇴근하세요.");
} else {
  console.log("일해라");
}

// 삼항연산자
let work = time >= 18? (console.log("퇴근하세요.")) : (console.log("일해라"));

위 코드와 같이 작성할 수 있다. if/else문 말고도 if/else if/else도 작성할 수 있다.

// 기존 else if
let time = 18;

if(time >= 18) {
    console.log("퇴근하세요.");
} else if(time >= 13) {
  console.log("반차입니다~");
} else {
 console.log("일해라"); 
}

// 삼항연산자
let work = time >= 18? (console.log("퇴근하세요.")) : time >= 13? (console.log("반차입니다~")) : (console.log("일해라"));

switch 문

switch문은 if/else 문과 마찬가지로 주어진 조건 값에 따라 프로그램이 다른 명령을 수행하도록 하는 조건문이다.
switch문은 if 문보다 가독성 측면에서는 더 좋다. if의 경우 if(i>=10 && 10=>i) 이와 같이 범위를 정할 수 있지만 switch의 경우는 case를 쓰기 때문에 값이 하나일 때 사용한다.

switch (menu){
    case 1 : console.log("물건사기");
    break;

    case 2 : console.log("잔고확인");
    break;

    case 3 : console.log("히스토리확인");
    break;

    default : console.log("홈으로 돌아가기");
}

default 절은 조건 값이 위에 나열된 어떠한 case 절에도 해당하지 않을 때 실행된다. 이 구문은 반드시 존재해야 하는 것은 아니다. 또 한 각 case 절은 반드시 break키워드를 포함하고 있어야 한다. break 키워드는 조건 값에 해당하는 case절이나 default 절이 실행된 뒤에 전체 switch문을 빠져나가게 해준다.

💡 default 절의 위치가 반드시 switch 문의 맨 마지막일 필요는 없다.

반복문

반복문이란 프로그램 내에서 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 실행문이다. 프로그램이 처리하는 대부분의 코드는 반복적인 형태가 많으므로, 가장 많이 사용되는 실행문 중 하나이다.

  • while
  • do / while
  • for
  • for / in
  • for / of

while

while 문은 특정 조건을 만족할 때까지 계속해서 주어진 실행문을 반복한다.

while

🚫 주의할 점
조건문이 참이 될 때까지 주어진 실행문을 반복한다고 했다. 그렇다면 계속 참인 조건문이라면? 무한 반복이 일어난다.

while(true){
    console.log("while문의 무한 반복")
}

그렇다면 무한반복에서 벗어나려면 어떻게 해야하나? break를 사용하면 된다.

let val;

   while (true){
      val = Math.ceil(Math.random() * 10);
      document.write("val : " + val + "<br>");
      if (val==7){
         break;
      }
   }

do / while

while 문은 루프에 진입하기 전에 먼저 표현식부터 검사한다. 하지만 do / while 문은 먼저 루프를 한 번 실행한 후에 표현식을 검사한다. 즉, do / while문은 표현식의 결과와 상관없이 무조건 한 번은 루프를 실행한다.

var i = 1, j = 1;

do{
 document.write("j : " + (j++) + "<br>");
} while(j > 3)

for

for문은 while 문과 달리 자체적으로 초기식, 표현식, 증감식을 모두 포함하고 있는 반복문이다.

for (초기식; 표현식; 증감식) {
    표현식의 결과가 참인 동안 반복적으로 실행하고자 하는 실행문;
}
for(let i = 0; i <= 10; i++) // 1씩 증가하는 반복문

중첩 for

for문 안에 for문을 넣을 수 있다. 이것을 중첩 for문이라고 한다.

for(let i=2; i<=9; i++){
    for(let j=1; j <=9; j++){
        console.log(i+"x"+j+"=" + i*j);
    }
}

for / in

for / in 문은 일반적인 for문과는 전혀 다른 형태의 반복문이다. for / in 문은 해당 객체의 모든 열거할 수 있는 프로퍼티를 순회할 수 있도록 해준다.

// 기존 for 문
let fruit = ["banana", "apple", "mango", "grape"];

for(let i = 0; i<fruit.length; i++){
    console.log(fruit[i]);
}

// for / in 문
for (var i in fruit) { // 위와 같은 동작을 하는 for / in 문
    console.log(fruit[i]);
}

for / of

for / of 문은 반복할 수 있는 객체(iterable objects)를 순회할 수 있도록 해주는 반복문이다.
자바스크립트에서 반복할 수 있는 객체에는 Array, Map, Set, arguments 객체 등이 있다. 이 반복문은 루프마다 객체의 열거할 수 있는 프로퍼티의 값을 지정된 변수에 대입한다.

let arr = [3, 5, 7];
arr.foo = "hello";

for (let i in arr) {
   console.log(i); // logs "0", "1", "2", "foo"
}

for (let i of arr) {
   console.log(i); // logs "3", "5", "7"
}
profile
느리지만 탄탄한 개발자 1명 빠른 개발자 10명 안부럽다.

0개의 댓글