JavaScript에서는 == 및 === 연산자를 모두 사용하여 두 값이 동일한지 여부를 확인할 수 있습니다. 차이점은 두 값 유형이 일치하지 않으면 === 연산자가 직접 false를 반환한다는 것입니다. while == 연산자는 유형 변환 후에 판단됩니다. 자세한 판단 규칙은 다음과 같습니다.
=== 운영자의 판단규칙
1. 두 값의 유형이 일치하지 않으면 false를 반환합니다.
2. 두 값의 유형이 같고 값이 같으면 true를 반환합니다. NaN은 특별한 경우입니다. NaN===NaN은 false를 반환합니다.
3. 두 값이 모두 개체 유형인 경우 두 참조가 일치하지 않는 한(참조는 동일한 개체 주소를 가리킴) Java와 마찬가지로 개체의 내용이 정확히 동일하더라도 두 값은 일치하지 않는 것으로 간주되며 해당 작업이 수행되면 false가 반환됩니다. 예를 들어, 정확히 동일한 내용으로 두 개의 새 배열을 만들고 === 연산을 수행하면 반환 결과는 false입니다. 내용이 정확히 동일하더라도 여전히 두 개의 다른 개체에 속합니다.
4.0===-0은 true를 반환합니다.
==운영자 판단 규칙
== 연산자는 비교 전에 값의 유형을 변환합니다. 유형 변환은 비교 전에 먼저 숫자로 변환되고, 비교 전에 Date 객체가 먼저 문자열로 변환됩니다. 구체적인 판단 규칙은 다음과 같습니다.
1. 두 값 유형이 일치하면 === 연산을 수행하고 반환합니다.
2.null==정의되지 않음은 사실입니다.
3. 비교 전 true는 1로 변환되고, 비교 전 false는 0으로 변환됩니다.
4. 값 중 하나가 객체인 경우 Date 객체를 제외하고 비교 전 숫자로 변환합니다.
5. 값 중 하나가 Date 객체인 경우 비교하기 전에 문자열로 변환합니다.
실험
console.log("3" == 3);//true
console.log(null == 정의되지 않음);//true
console.log(true == 1);//true
console.log(true == 9);//false
console.log([9] == 9);//true
console.log([9] == "9");//true
var d = new Date();
var s = d.toString();
var n = d.valueOf();
console.log(d == s);//true
console.log(d == n);//false