다른 언어의 경우 데이터 타입이 다르면 연산이 불가능하지만 자바스크립트는 자동 형변환으로 서로 다른 데이터 타입을 일치시켜 연산한다.
console.log(4 + '2') // 42, 숫자 + 문자열은 문자열 + 문자열로 변환되어 이루어진다.
console.log(4 + 2) // 6
console.log(4 - true) // 3
console.log(4 * false) // 0 , true는 1, false는 0으로 변환되어 계산된다.
console.log(4 / '2') // 2, 숫자 / 문자열은 숫자 / 숫자로 변환되어 계산된다.
console.log('4' ** true) // 4, 문자열 ** 불린값은 숫자처럼 계산된다.
console.log(4 % 'two') // NaN
console.log(2 < '3') //true 2 < 3
console.log(2 > true) //true, 2 > 1
console.log('2' <= false) //false , 2 <= 0
console.log ('two' >= 1) //false, NaN >= 1
===
,!==
는 일치, 불일치==
,!=
는 동등, 부등이라고 한다.
일치비교는 형변환이 일어나지 않지만 동등 비교는 형변환이 일어난다.
코드가 조금만 복잡해져도 두 값을 비교할때 동등 비교를 사용하면 예상치 못한 형변환이 일어날 수 있기 때문에 일치 비교 연산자를 사용할 것을 권장한다.
console.log(1 === '1') // false
console.log(1 === true) // false
console.log(1 == '1') // true
console.log(1 == true) // true