자바스크립트 동등 연산자(==)

서성원·2024년 11월 23일
0

자바스크립트

목록 보기
5/6
post-thumbnail

동등 연산자란?

동등 연산자(==)는 두 개의 피연산자가 동일한지 확인, 불리언 결과를 반환한다. 

일치 연산자(===)와 다르게 다르게 다른 타입의 피연산자들끼리의 비교를 시도한다.

예시 코드를 가져왔는데 간단하게 생각하면 타입에 느슨한 느낌이다.

console.log(1 == 1);
// output: true

console.log('hello' == 'hello');
// output: true

console.log('1' == 1);
// output: true

console.log(0 == false);
// output: true

Deep Dive

1. 두 연산자가 동일한 타입일 때

  • 객체: 두 피연산자가 동일한 객체를 참조할 때만 true를 반환한다.
  • 문자열: 동일한 문자를 동일한 순서로 가질 때만 true를 반환한다.
  • 숫자: 두 피연산자가 동일한 값을 가질 때만 true를 반환한다.
    두 개다 NaN일 시에는 항상 서로 다르므로 false를 반환한다.
  • 불리언: 둘다 같은 값일 때만 true를 반환한다.
  • BigInt: 동일한 값을 가질 때만true를 반환한다.
  • 심볼: 두 피연산자가 동일한 심볼을 참조할 때만true를 반환한다.

2. null 이거나 undefined일 때

  • 하나의 피연산자가 null 이거나 undefined일 때 true를 반환하기 위해 다른 하나가 무조건 null or undefined이어야 한다.

3. 객체-원시타입 일 때

  • 객체를 원시 타입으로 변환한다. 원시타입은 문자열, 숫자, 불리언, 심볼, BigInt 가 있다.

3-1. 변환 순서

  • 타입이 같다면 1번(두 연산자가 동일한 타입일 때)을 따른다.

  • 심볼 && not 심볼 -> false를 반환한다.

  • 불리언 && not 불리언 -> 불리언을 숫자로 변환한다. true를 1로, false는 0으로 변환하고 다시 느슨한 비교를 한다.

  • 숫자 && 문자열 -> 문자열을 숫자로 변환한다. 변환 실패의 결과는 NaN이어서, 비교 결과가 false라는 것을 보장한다.

  • 숫자 && BigInt -> 숫자 값으로 비교한다. 숫자가 Infinity 거나 NaNfalse를 반환한다.

  • 숫자 && BigInt -> 문자열을 BigInt() 생성자와 같은 알고리즘으로 BigInt로 변환한다. 변환이 실패하면 false를 반환한다.

profile
FrontEnd Developer

0개의 댓글

관련 채용 정보