프론트엔드 공부/Javascript 기초

23일차 프론트엔드 공부 - 조건문

프망생222 2024. 10. 2. 21:35

- 프론트엔드 공부 23일차 -


조건문

 

비교 연산자

두개의 데이터를 서로 비교하는 방법

 

조건문 

코드의 실행 분기점

 

비교 연산자

 

엄격한 비교 연산자

===

 

느슨한 비교 연산자
==

 

느슨한 비교 연산자보다 엄격한 비교 연산자를 이용하는 것이 좋다

 

ex)

1 === “1”

false

 

1 == “1”

true

 

0 == “0” 

true

 

0 == []

true

 

“0” == []

false

 

배열과 객체의 비교

 

원시 타입 (Primitive type)

 

참조 타입 (Reference type)

 

원시 타입

String, Number, Boolean, Bigint, undefined, Symbol, Null

 

참조 타입
원시 타입 이외의 모든 것

 

원시 타입 특징

불변성 (데이터가 변하지 않는 속성)

 

참조 타입의 특징

가변성

 

ex) 

값의 복사

let a = “hi”

let b = a

b = “bye”

console.log(b) -> “hi”

 

값의 복사 (참조 타입)

let a = [1, 2, 3]

let b = a

a.pop()

console.log(a) = [1, 2]

console.log(b) = [1, 2]

 

조건문

로직의 실행 분기

우리가 작성한 조건이 참일경우 지정한 코드를 수행하도록 하는 기능

 

if(조건식)

 

if( 조건1 ) {

// 조건1이 참이면 실행

} else if( 조건2 ) {

// 조건1은 거짓, 조건2는 참이면 실행

} else {

// 모두 거짓이면 실행

}



논리 연산자

&&  AND 연산자 => 양쪽에 위치한 조건이 모두 만족하는 경우 true

||  OR 연산자 => 양쪽에 위치한 조건 중, 하나라도 만족하는 경우 true

 

<!DOCTYPE html>
<html lang="ko">
  <head>
    <title>D-Day</title>
    <link rel="stylesheet" href="./index.css" />
    <script>
      const dateFormMaker = function () {
        const inputYear = document.querySelector("#yearInput").value;
        const inputMonth = document.querySelector("#monthInput").value;
        const inputDay = document.querySelector("#dayInput").value;

        // const dateFormat = inputYear + '-' + inputMonth + '-' + inputDay;
        const dateFormat = `${inputYear}-${inputMonth}-${inputDay}`;
        return dateFormat;
        // console.log(inputYear, inputMonth, inputDay)
      };

      const counterMaker = function () {
        const targetDateInput = dateFormMaker();
        const nowDate = new Date();
        const targetDate = new Date(targetDateInput).setHours(0, 0, 0, 0);
        const remaining = (targetDate - nowDate) / 1000;
        // remaining === 0 (남은 시간이 0)
        if (remaining <= 0) {
          console.log("타이머가 종료되었습니다.");
        } else if (isNaN(remaining)) {
          // 만약 잘못된 날짜가 들어왔다면, 유효한 시간이 아닙니다 출력
          console.log("유효한 시간이 아닙니다.");
        }

        const remainingDate = Math.floor(remaining / 3600 / 24);
        const remainingHour = Math.floor(remaining / 3600) % 24;
        const remainingMin = Math.floor(remaining / 60) % 60;
        const remainingSec = Math.floor(remaining) % 60;

        console.log(remainingDate, remainingHour, remainingMin, remainingSec);
      };
    </script>
  </head>
  <body>
    <h1>D-Day</h1>
    <div id="ddayContainer">
      <div class="ddayChildContainer">
        <span id="days">0</span>
        <span>일</span>
      </div>
      <div class="ddayChildContainer">
        <span id="hours">0</span>
        <span>시간</span>
      </div>
      <div class="ddayChildContainer">
        <span id="min">0</span>
        <span>분</span>
      </div>
      <div class="ddayChildContainer">
        <span id="sec">0</span>
        <span>초</span>
      </div>
    </div>
    <div id="targetSelctor">
      <input id="yearInput" class="date" size="5" placeholder="년" /> -
      <input id="monthInput" class="date" size="5" placeholder="월" /> -
      <input id="dayInput" class="date" size="5" placeholder="일" />
    </div>
    <button id="startBtn" onclick="counterMaker()">카운트다운</button>
  </body>
</html>

 

* {
  box-sizing: border-box;
}

body {
  display: flex;
  flex-direction: column;
  align-items: center;
}

h1 {
  font-size: 3rem;
}

#ddayContainer {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  margin-bottom: 1.6rem;
}

.ddayChildContainer {
  text-align: center;
  margin-right: 1rem;
}

.ddayChildContainer span {
  font-size: 1.3rem;
}

#startBtn {
  margin-top: 0.5rem;
  font-size: 1.5rem;
}

 

올바르지 않은 날 입력
이미 지난 날짜 입력

 

isNAN(a)

- a 가 NAN인지 판별해주는 코드

a 가 NAN 이면 true, 아니면 false 를 출력