==, ===

ES
비고
== : loose equality, with type conversion === : strict equality, no type conversion ← 이거 써라
Tags
operator

==

loose equality, with type conversion
'10'은 문자열이지만 숫자만 들어있으므로 숫자 10으로 간주하고 비교함.
💡
형변환이 된다는 사실을 인지하고, 의도한 경우에만 사용.
const stringNum = '10'; const Num = 10; stringNum == Num; // true stringNum != Num; // false

===

strict equality, no type conversion
형변환을 하지 않고 그대로 문자열과 숫자를 같은지 비교하므로, 앞서 살펴본 ==과 결과가 반대.
💡
웬만한 상황에서는 이걸 쓰자
const stringNum = '10'; const Num = 10; stringNum === Num; // false stringNum !== Num; // true
 

간단한 테스트

0 == false; // true 0 === false; // false '' == false; // true '' === false; // false null == undefined; // true null === undefined; // false
const a = { a: 'a' }; const a2 = { a: 'a' }; const a3 = a; a == a2; // false --- 두 오브젝트의 ref가 다르므로 a === a2; // false a == a3; // true -- 두 오브젝트의 ref가 동일하므로 a === a3; // true