==, === 차이점

wony·2022년 4월 8일
0

항등연산자 (==)

항등연산자는 비교하는 두개의 피연산자가 동일한 값인지 확인한다
Boolean값을 반환한다

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

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

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

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

동등연산자는 타입이 달라도 값만 같다면 true를 반환한다

  1. 두 피연산자가 모두 객체일때, 두 피연산자가 동일한 객체를 참조할때에만 true를 반환합니다.
  2. 하나의 피연산자가 null이고 다른 하나가 undefined일때, true를 반환합니다.
  3. 두 피연산자의 타입이 다를 경우, 비교하기 전에 동일한 타입으로 변환하도록 합니다:
  4. 숫자와 문자열을 비교할 경우, 문자열을 숫자로 변환하도록 합니다.
  5. 하나의 피연산자가 Boolean일 경우, Boolean 피연산자가 true일 경우 1로 변환하고, false일 경우, +0으로 변환합니다.
  6. 하나의 피연산자가 객체이고 다른하나가 숫자나 문자열이면, 객체를 valueOf()나toString()를 사용해 기본 데이터 타입으로 변환하도록 합니다.
  7. 두개의 피연산자가 동일한 타입일 경우, 다음과 같이 비교됩니다:
  • String: 두 피연산자가 동일한 문자순서가 동일한 문자열일 경우, true를 반환합니다.
  • Number: 두 피연산자가 동일한 값을 가질 경우, true을 반환합니다. +0 과 -0 은 동일한 값으로 취급합니다. 어느 한쪽이 NaN일 경우, false를 반환합니다.
  • Boolean: 두 피연산자가 모두 true이거나, 모두 false일 경우, true를 반환합니다.

완전 항등 연산자(===)

완전 항등 연산자(===)는 두 피연산자가 같은지 확인하여 Boolean 결과를 반환합니다.
동등 연산자 와 달리 완전 항등 연산자는 항상 다른 유형의 피연산자를 서로 다른 것으로 간주합니다.
(값의 타입까지 비교하는 연산자이다.)

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

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

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

console.log(0 === false);
// expected output: false
  1. 피연산자의 유형이 다른 경우 를 반환 false합니다.
  2. 두 피연산자가 모두 객체인 true경우 동일한 객체를 참조하는 경우에만 반환합니다.
  3. 두 피연산자가 모두 null이거나 두 피연산자가 모두 undefined이면 반환 true합니다.
  4. 피연산자 중 하나가 NaN이면 반환 false합니다.
  5. 그렇지 않으면 두 피연산자의 값을 비교합니다.
  • 숫자는 동일한 숫자 값을 가져야 합니다. +0와 -0 같은 값으로 간주됩니다.
  • 문자열은 같은 순서로 같은 문자를 가져야 합니다.
  • true부울은 둘 다 또는 둘 다 여야 합니다 false.

완전항등연산자 (===)와 항등연산자(==) 의 가장 두드러지는 차이점은 항등연산자는 타입변환을 시도하지 않는다는 것입니다.
완전항등연산자는 다른 타입을 가진 피연산자는 다르다고 판단합니다.


출처 - MDN

profile
무럭무럭 성장중🌿

0개의 댓글