[JS] ==와 === 비교

== : loose equality, 타입이 달라도 같다고 판단.

console.log('5' == 5) // true
console.log('5' === 5) // false

=== : strict equality, 타입까지 같아야 같다고 판단.

  • ===는 특히 object의 비교에서 유의해야 한다.

  • object끼리의 비교는 내용물이 아닌, reference로 비교한다.

    const hong1={name: 'hong'};
    const hong2={name: 'hong'};
    const hong3=hong1;

    console.log(hong1==hong2); //false
    console.log(hong1===hong2); //false, ==가 false인데 ===가 같을수가 있나!

    console.log(hong1==hong3); //true
    console.log(hong1===hong3); //true
  • hong1과 hong2는 내용물은 같지만 따로 생성된 object이므로 저장된 reference가 다르므로 두 equality 모두 false.
  • hong3은 hong1에 저장된 reference를 그대로 저장하게 되므로 ==,=== 모두 true.

좋은 웹페이지 즐겨찾기