
자바스크립트의 == 연산자는 복잡한 형변환 규칙을 가지고 있다. 이는 JavaScript Type Table을 보면 명확하게 확인할 수 있다. 이 테이블은 ==와 ===연산자의 차이를 극명하게 보여준다. 이러한 복잡한 형변환 규칙 때문에 느슨한 검사를 피해야 한다.


'1' == 1 // 느슨한 검사 => 형 변환
1 == true // true
0 == false // true
// 문자열 결합시 암묵적 변환
11 + ' 문자와 결합' // '11 문자와 결합'
// boolean으로의 암묵적 변환
!!'문자열' //true
!!'' //false
이러한 암묵적 형변환 코드는 예측 가능성을 떨어뜨리고 버그의 원인이 될 수 있다.
개발자가 의도적으로 수행하는 더 안전하고 명시적인 형변환 방법
String(11) + ' 문자와 결합' // '11 문자와 결합'
Boolean('문자열') // true
Boolean('') // false
Number('11') // 11
parseInt('9.9999', 10); // 9
Wrapper 객체를 사용한 명시적 형변환이 코드의 의도를 더 명확하게 전달한다.
===) 사용하기// ❌ 이렇게 하지 마세요
if (value == 123) { ... }
// ✅ 이렇게 하세요
if (value === 123) { ... }
// ❌ 피해야 할 방식
const num = +'123'
// ✅ 권장하는 방식
const num = Number('123')