동등연산자를 사용하면 형변환이 일어난다(type casting). 일반적인 동등연산자를 사용할 경우 내부적으로 타입캐스팅이 일어난다.
'1' == 1 // true
1 == true // true
엄격한 동등연산자를 사용해서, 엄격하게 타입을 체크하는 것이 좋다.
'1' === 1 // false
1 === true // false
lint설정을 통해 eqeq사용을 막는것도 방법이다.
자바스크립트에서는 암묵적인 형변환이 일어난다. 암묵적이라는 것은 Number, String같은 명령어를 사용하지 않더라도, tricky한 방법을 통해 형변환을 일으킬 수 있다.
따라서, 개발중 생기는 오류를 줄이기 위해선 암묵적 형변환보단 명시적인 형변환을 해주는 것이 좋다.
11 + 'A' // 11A 문자열
!!'문자열' // true
!!'' // false
parseInt('9.999', 10) // 9
// 명시적 형변환
String(11 + 'A') // 11A 문자열
Boolean('문자열') // true
Boolean('') // false
parseInt('9.999', 10) // 9
사용자가 형변환을 하는 경우는 명시적인 형변환이다. 사용자가 아닌 자바스크립트 엔진이 만들어 내는 형변환은 암묵적인 형변환이라 한다. 타입을 변환할 때 명시적인 형변환을 해서 예측하기 쉬운 타입 변환을 해야한다.