출처를 정리한 내용입니다.
자바스크립트는 엄격한 비교와 유형변환 비교를 모두 지원하므로, 어떤 연산자가 어떤 비교조건에 사용되는지가 중요합니다.
'='는 value 값을 의미합니다.
ex)
number =2
'=='는 value와 value를 비교합니다. 비교하는 두 개의 값(피연산자)을 강제로 같은 형으로 변환한 후, 비교를 수행합니다.
즉, 두 값의 타입이 다르더라도, 형 변환된 값이 같다면 true를 리턴합니다.
ex)
a = 10
b = '10'
a == b // true
'==='는 value와 data type을 비교합니다. 비교하는 두 개의 값(피연산자)의 타입과 값이 모두 같을 경우에만, true를 리턴합니다.
ex)
a = 10
a === 10 // true
a === '10' // false
// 자동 유형변화 비교
null == undefined // true
// 두 피연산자의 유형이 다르기 때문에 ->false
null === undefined // false
console.log(typeof null); // "object"
console.log(typeof undefined); // "undefined"
유형 변환 비교와 엄격한 비교의 [값]과 [자료형]의 다름을 boolean 형식으로 반환합니다.
// 값이 다르지 않음으로 (자료형 비교 안함)
2 != "2" // false
// 두 피연산자의 유형이 다른 것이 맞기 때문에 -> true
2 !== "2" // true
console.log(typeof 2); // "number"
console.log(typeof "2"); // "string"
NaN (Not a Number)은, 어떤 것과도 같지 않다는 것을 기억해야 합니다.
변수를 비교하거나 어떤 비교를 위해 항상 '===' 연산자를 사용 할 것을 권장합니다.
가능한 '==' 연산자를 사용하지 않도록 하고, 대신 직접 자료형을 변환하여(casting) 보다 코드 가독성을 높이도록 합니다.