[JS] 동등 연산자와 일치 연산자의 차이는 무엇일까?

ssumniee·2021년 8월 24일
0

🤔 QnA

목록 보기
2/5

간단히 설명하자면, 동등 연산자==데이터 타입을 확인하지 않고 값을 비교하고, 일치 연산자 ===같은 데이터 타입 안에서 값을 비교하는 차이가 있다.

동등 연산자 ==

== 는 비교 대상을 같은 타입으로 바꾸어 비교하는, 상대적으로 관대한 비교를 한다. 이 과정에는 다음과 같은 규칙이 존재한다.

  • 두 비교 대상의 데이터 타입이 같다면 일치 연산자 === 처럼 비교한다.

  • undefined == null

  • 한쪽의 데이터 타입이 string 이고 다른 쪽은 number 라면, stringnumber 로 바꾸어 비교한다.

  • 한쪽의 데이터 타입이 boolean 이고 다른 쪽은 non-boolean 이라면, booleannumber 로 바꾼 후 비교한다.

  • 객체에서 string 타입과 number 타입을 비교할 땐, 객체를 원시자료형으로 바꾸어 비교한다.

일치 연산자 ===

=== 는 데이터 타입과 값을 모두 비교하는 엄격한 비교를 한다. 따라서 타입과 값이 모두 같을 때만 참을 반환하고 다르면 거짓을 반환한다.

문자열을 비교할 경우, 완전히 동일한 문자열을 비교해야만 참을 반환한다. string 이라는 데이터 타입만 같고 문자열 속의 글자가 한글자라도 다르다면 거짓을 반환한다.
원시자료형 타입인 number , boolean 역시 정확히 같은 값을 가지고 있어야만 참을 반환한다.

특징

객체배열은 참조 자료형이므로 동등 연산자나 일치 연산자로 비교할 수 없다. 하지만 식별자 번호(배열의 경우 인덱스 넘버, 객체의 경우 속성)를 통해 내부의 각 요소들은 비교할 수 있다.

NaN, null, undefined 는 다른 모든 데이터 타입과 일치 연산자 === 를 사용해 비교했을 때 반드시 거짓을 반환한다. NaN 은 일치 연산자 === 로 자기 자신과 비교해도 거짓을 반환한다.

// number 타입과 비교
NaN === 1; // false
null === 1; // false
undefined === 1; // false

// string 타입과 비교
NaN === '1'; // false
null === '1'; // false
undefined === '1'; // false

// boolean 타입과 비교
NaN === true; // false
null === true; // false
undefined === true; // false

NaN === false; // false
null === false; // false
undefined === false; // false

// 자기 자신과 비교
NaN === NaN; // true
null === null; // true
undefined === undefined; // false
profile
개발에 뛰어든 UX/UI 디자이너

0개의 댓글