<TIL>Javascript_조건, 반복문

2021.08.04

조건문

조건을 거친 후 값을 출력하고 싶을 때 사용

if

사용법
if(조건) { 조건이 참일때 실행 }
else if(조건) { 조건이 참일때 실행 }
else { 조건이 거짓일때 실행 }

예시코드

  <body>
    <script>
      let name = prompt('이름을 입력해주세요.');
      let height = prompt('신장을 입력해주세요.');
      let weight = prompt('체중을 입력해주세요.');
      const goodWeight = Number((height - 100) * 0.9);

      if (weight >= goodWeight - 5 && weight <= goodWeight + 5) {
        document.write(
          `${name}님은 정상체중(${weight}kg)이고 적정체중(${goodWeight}kg)에서는 ${parseInt(
            weight - goodWeight
          )}kg차이가 납니다.`
        );
      } else if (weight > goodWeight + 5) {
        document.write(
          `${name}님은 과체중(${weight}kg)이고 적정체중(${goodWeight}kg)에서는 ${parseInt(
            weight - goodWeight
          )}kg차이가 납니다.`
        );
      } else if (weight < goodWeight - 5) {
        document.write(
          `${name}님은 저체중(${weight}kg)이고 적정체중(${goodWeight}kg)에서는 ${parseInt(
            weight - goodWeight
          )}kg차이가 납니다.`
        );
      } else {
        document.write('잘못입력하셨습니다.');
      }
    </script>
  </body>

실제 사용자에게 값을 받아서 변수에 넣고 그 변수와 비교할 값을 계산식으로 계산 후 새로운 변수에 넣어 if문으로 범위를 조건으로 지정해 출력해주는 간단한 코드이다.

위와 같이 프롬프트가 나와 질문에 해당하는 값을 다 입력하고 나면

'철수, 180cm, 60kg'로 입력 시
철수님은 저체중(60kg)이고 적정체중(72kg)에서는 -12kg차이가 납니다.

'철수, 180cm, 70kg'로 입력 시
철수님은 정상체중(70kg)이고 적정체중(72kg)에서는 -2kg차이가 납니다.

'철수, 180cm, 80kg'로 입력 시
철수님은 과체중(80kg)이고 적정체중(72kg)에서는 8kg차이가 납니다.

'철수, 180cm, 정상임'으로 입력 시
잘못입력하셨습니다.

위와 같이 결과가 나오게 된다.

중복 if

조건을 거친 값에 한번 더 조건을 걸어 값을 추출하고 싶을 때 사용

사용법
if (조건) {
if (조건) { 조건이 참일때 실행 }
}

예시코드

  <body>
    <script>
      let dbId = 'test';
      let dbPw = 1234;

      let userId = prompt('아이디를 입력하세요', '');

      if (dbId == userId) {
        let userPw = prompt('비밀번호를 입력하세요', '');

        if (dbPw == userPw) {
          document.write('로그인 성공 환영합니다.');
        } else {
          document.write('비밀번호가 일치하지 않습니다.');
        }
      } else {
        document.write('아이디가 일치하지 않습니다.');
      }
    </script>
  </body>

프롬프트의 질문에 입력한 값에 따라

아이디가 설정된 값과 불일치할 경우
아이디가 일치하지 않습니다.

아이디가 설정된 값과 일치하고 입력 후 비밀번호가 불일치한 경우
비밀번호가 일치하지 않습니다.

아이디가 설정된 값과 일치하고 입력 후 비밀번호도 일치한 경우
로그인 성공 환영합니다.

위와 같이 나온다.
아이디가 일치하는지 확인하는 조건을 거친 후 비밀번호가 일치하는지 조건을 또 거치는 중복 if문을 사용한 예시이다.

switch

특정한 조건보다는 케이스 별로 나누어 케이스에 일치하면 해당하는 값을 추출하고 싶을때 사용하는 조건문

사용법
switch (입력받은 매개변수) {
case'일치를 원하는 값' : 일차하면 실행 ;
break; 순서대로 내려오는 switch문 강제종료
default: 케이스들에 전부 일치하지 않을 때 실행
}

예시코드

  <body>
    <script>
      let site = prompt('본인이 즐겨사용하는 검색사이트를 입력하세요');

      let url;

      switch (site) {
        case '구글':
          url = 'www.google.com';
          break;
        case '다음':
          url = 'www.daum.net';
          break;
        case '네이버':
          url = 'www.naver.com';
          break;
        default:
          alert('보기 중에는 없는 사이트입니다.');
      }

      if (url) {
        // open(`https://${url}`);
        location.href = `https://${url}`;
      }
    </script>
  </body>

프롬프트에 질문에 맞는 값을 입력하면

구글

다음

네이버

location.href = https://${url};으로 url 변수에 담긴 사이트 주소값으로 이동하는 간단한 코드이다.

반복문

while

특정 조건이 거짓으로 되기 전까지 실행을 반복할 때 사용하는 기능

사용법
while (조건) { 실행문 }

예시코드

    <style>
      p {
        font-size: 20px;
      }
      .red {
        color: red;
      }
      .blue {
        color: blue;
      }
    </style>
  </head>
  <body>
    <script>
      // 20 ~ 10까지 중 홀수는 파랑, 짝수는 빨강
      let i = 20;

      while (i >= 10) {
        if (i % 2 == 0) {
          document.write(`<p class="red">${i}</p>`);
        } else {
          document.write(`<p class="blue">${i}</p>`);
        }
        i--;
      }
    </script>
  </body>

while문의 조건에 따라 i라는 변수가 10보다 작아져서 조건이 거짓이 될때까지 실행문을 반복한다, 위 코드에서는 실행문에 if문이 있어 i가 2로 나눈 나머지가 0인 짝수이면 빨강색을 그 외, 즉 홀수이면 파란색을 나타내는 간단한 코드이다.

do while

while과는 살짝 다른 모양으로 조건이 어떻게 되었든 실행문이 한번은 실행되도록 해주는 반복문이다.

사용법
do{ 조건이 참일때 작동하는 실행문 } while ( 조건문 )

예시코드

  <body>
    <script>
      let i = 10;

      do {
        document.write('안녕하세요~!');
        i++;
      } while (i < 3);
    </script>
  </body>

변수 i가 while의 조건문에 벗어나 거짓이 나오지만 do에 작성된 실행문이 한번 실행되는 것을 볼 수 있다.

for

제일 많이 사용되는 반복문의 형태로 while과는 다르게 한번에 변수 및 조건을 다 입력할 수 있다.

사용법
for (초기값; 범위; 증감식) { 실행문 }

예시코드

  <body>
    <script>
      //1~20까지의 범위 중 짝수만 화면 출력
      for (let i = 1; i <= 20; i++) {
        // if (i == 10) break; // 반복문을 강제 종료
        if (i == 10) continue; // 건너띄고 실행
        if (i % 2 == 0) {
          document.write(i, '<br>');
        }
      }
      // 1~100까지의 합 출력
      let sum = 0;
      for (let j = 1; j <= 100; j++) {
        sum += j; // sum = sum + i;
      }
      document.write(sum);
    </script>
  </body>

if도 while 및 switch와 같이 break를 만나면 반복문이 강제종료되고 continue를 만나면 해당 조건에 해당되는 값은 건너뛰고 반복된다.

하단의 100까지의 합을 구할때 위 코드에서는 변수를 for문 밖에서 선언하고 해당 변수에 중복증감자(+=)를 사용해 증가하는 변수를 중복해서 더해주고 해당 변수를 for문 밖에서 호출해 body에 작성하면 1~100까지의 총합이 나오게된다.

document.write으로 body에 적는 것이 아닌 HTML태그를 선택하여 중복증감된 내용을 추가하는 방법

  <body>
    <h1>구구단</h1>
    <p id="wrap"></p>
    <script>
      const num = 2;

      let gugudan = '';

      for (let i = 1; i <= 9; i++) {
        gugudan += `${num} x ${i} = ${num * i} <br>`;
      }

      document.getElementById('wrap').innerHTML = gugudan;
    </script>
  </body>

미리 for문 밖에 변수를 선언해놓고 for문에서 해당 변수에 반복되는 변수를 적용해 값을 넣어주고 for문 밖에서 HTML의 태그를 선택해 내부 내용을 처음 선언된 변수로 넣어주어 적용한다.

이중 for문 : 반복문으로 테이블 그리기

  <body>
    <script>
      let num = 1;
      let table = '<table border="1">';
      for (let i = 1; i <= 5; i++) {
        table += `<tr>`;
        for (let j = 1; j <= 5; j++) {
          table += `<td>${num}</td>`;
          num++;
        }
        table += `</tr>`;
      }
      table += '</table>';

      document.write(table);
    </script>
  </body>

테이블을 만드는 태그 및 테이블 내에 적용될 숫자가 반복과 별개로 들어갈 수 있도록 변수를 밖에서 선언해주고 첫 for문에서 열을 만들어줄 <tr>을 앞뒤로 추가해주기 위해 두번째 내부 for문에 앞뒤로 table변수에 추가해주고 내부 for문에서 <td>${num}</td>를 table에 추가하고 num++을 사용해 숫자를 하나씩 증가시켜 넣어주어 반복시켜 행을 만들어주어 테이블을 만들어주고 값이 쌓여진 변수 table을 for문 밖에서 호출하여 출력해준다.

이중 for문 : 구구단

  <body>
    <script>
      for (let i = 1; i <= 9; i++) {
        for (let j = 1; j <= 9; j++) {
          document.write(`${i} x ${j} = ${i * j} <br>`);
        }
        document.write('<hr>');
      }
    </script>
  </body>

위의 table과 마찬가지로 앞에 오는 숫자를 제일 밖의 for문으로 입력해주고 뒤 곱해주는 숫자를 내부에 for문으로 반복하여 증가시켜주어 1단부터 9단까지 출력해준다.

좋은 웹페이지 즐겨찾기