회고/Techit Frontend School 10기

[멋쟁이 사자처럼 프론트엔드 스쿨] 27일차 TIL - 비교, if문, 논리 연산자

kelly09 2024. 6. 1. 10:06

🍴 비교 연산자

불린형 반환

: true 반환-참, false 반환-거짓

  • 반환된 불린값은 변수에 할당 가능
  • falsy 값 - 0, 빈 문자열"", null, undefined, NaN
  • 이 외의 값은 불린형으로 변환 시 true가 되므로 truthy

문자열 비교

: 사전 편집(lexicographical) 순으로 문자열 비교

  • 대소문자 따짐
  • 정확하게는 사전 순이 아니라 유니코드 순임 ex) a > A

다른 형을 가진 값 간의 비교

: 비교하려는 값의 자료형이 다를 때 숫자형으로 바꿈

console.log('2' > 1); // true
console.log('01' == 1); // true

/* 이상한 상황 */
let a = 0;
console.log( Boolean(a) ); // false

let b = "0";
console.log( Boolean(b) ); // true

console.log(a == b); // true!
  • 동등 비교 연산자는 "0"(문자열)을 0(숫자)으로 변환시켜서 둘 다 숫자로 인식하기 때문에 true값이 출력됨

🍴 일치 연산자(strict equality operator)

  • 동등 연산자 ==은 0false를 구별하지 못함
  • 동등 연산자는 형이 다른 피연산자를 비교할 때 피연산자를 숫자형으로 바꾸기 때문에 발생
console.log( 0 == false ); // true
  • 일치 연산자는 엄격한 동등 연산자
  • 자료형의 동등 여부까지 검사
console.log( 0 === false ); // false

🍴 null과 undefined 비교하기

  • null이나 undefined를 다른 값과 비교할 땐 예상치 못한 결과 발생할 수 있음
console.log( null === undefined ); // false
console.log( null == undefined ); // true 각별한 커플...

🍴 null과 0

console.log( null > 0 );  // false: null이 0이 됨
console.log( null == 0 ); // false: '=='은 null과 undefined 끼리만 true 반환
console.log( null >= 0 ); // true: null이 숫자형으로 변환돼 0이 됨
  • 동등 연산자와 비교 연산자의 동작 방식이 다르기 때문에 위와 같은 결과

🍴 if문

: 조건에 따라 다른 행동 취할 때 사용

  • 괄호 안의 조건식true면 코드 블록 실행
  • 조건이 참일 때 실행되는 구문이 한 줄이더라도 중괄호로 감싸기를 권장
let year = 2024;

if(year == 2024) { // 조건식이 true
	console.log("올해"); // 이 코드 실행됨
   } else {
   	console.log("올해 아님");
   }

else 절

: else 뒤에 이어지는 코드 블록은 조건이 거짓일 때 실행

  • else if복수 조건 처리할 수 있음

🍴 조건부 연산자 '?'

: 조건식평가 결과에 따라 반환 값 결정

조건식 ? 조건식이 true일 때 반환할 값 : 조건식이 false 일 때 반환할 값
let result = score >= 70 ? 'pass' : 'fail';
// 점수가 70 이상이면 'pass' 반환, 아니면 'fail' 반환
  • 조건식의 평가 결과가 불리언 값이 아닌 경우 불리언 값으로 암묵적 타입 변환

🍴 || (OR)

: 둘 중 하나라도 true면 true 반환. 둘 다 false면 false 반환.

  • OR의 추가 기능: 첫 번째 truthy를 찾음
  • 단락 평가(short circuit evaluation): truthy를 만나면 나머지 값은 건드리지 않고 평가를 멈춤
console.log(undefined || null || 0);
// 모두 falsy, 마지막 값 반환

console.log(null || 1 || 0);
// 1은 truthy이므로 1 반환

🍴 && (AND)

: 두 피연산자가 모두 참일 때만 true 반환

  • 첫 번째 falsy 값을 반환
  • 각 피연산자는 불린형으로 변환됨
  • 변환 후 값이 false면 평가를 멈추고 해당 피연산자의 변환 전 원래 값 반환

🍴 ! (NOT)

: 피연산자를 불린형으로 변환, 변환된 값의 역을 반환

console.log(!true); // false
console.log(!!0); // false