조건문

단락회로평가

단락회로평가는 조건문을 평가할 때 조건이 참인 경우 조건문을 종료하는 것을 의미한다.

const a = 1;
const b = 2;
const c = 3;

console.log(a && b && c); // 3
console.log(a || b || c); // 1

위 코드에서 a && b && c는 a가 참이므로 b를 평가하고, b가 참이므로 c를 평가하여 3을 반환한다.

a || b || c는 a가 참이므로 조건문을 종료하고 1을 반환한다.

단락회로평가는 이처럼 조건문에서 효율적인 코드를 작성하기 위해 사용된다.

if문

삼항조건연산

깊은/얕은 비교

  • === : 깊은 비교 (자료형까지 같은지 검사)
  • == : 얕은 비교 (자료형 상관없이 값만 같은지 검사)
console.log(1 === '1'); // false
console.log(1 == '1'); // true

이때 중요한 것은, 참조형 변수와의 비교에서는 얕은비교, 깊은비교의 차이가 없이 둘다 참조 비교를 하게 된다. 이는 자바스크립트의 비교 연산 규칙이다.

const obj1 = { x: 10 };
const obj2 = { x: 10 };  // 같은 내용이지만 다른 객체
const obj3 = obj1;       // obj1과 같은 참조

console.log(obj1 == obj2);   // false (다른 객체 참조)
console.log(obj1 === obj2);  // false (다른 객체 참조)
console.log(obj1 == obj3);   // true (같은 객체 참조)
console.log(obj1 === obj3);  // true (같은 객체 참조)

참조형 타입은 항상 메모리 주소를 비교하며, 내용이 같더라도 다른 객체면 false를 반환한다.

내용 비교가 필요한 경우:

  • 객체/배열:JSON.stringify(obj1) === JSON.stringify(obj2) 또는 깊은 비교 함수 사용

  • 함수: 함수 내용 비교는 일반적으로 불가능 (함수의 toString()을 비교할 수는 있지만 권장되지 않음)

논리 연산자

  • && : 논리곱 (모든 조건이 참이어야 참)
  • || : 논리합 (하나의 조건이 참이면 참)
  • ! : 논리부정 (조건이 참이면 거짓, 거짓이면 참)


‼️ 모든 글이 정확하지 않을 수 있습니다. 잘못된 정보가 있을 경우 댓글로 알려주시면 감사하겠습니다.