변환 규칙은 다음과 같습니다.
피연산자 중 하나가 부울 유형이면 먼저 숫자 유형으로 변환되고, false는 0으로, true는 1로 변환됩니다.
피연산자 중 하나의 유형이 문자열이고 다른 유형이 숫자 유형인 경우 비교를 위해 문자열이 숫자로 변환됩니다.
피연산자 중 하나가 문자열 유형이고 다른 하나가 객체 유형인 경우 객체의 toString 메서드가 호출되고 문자열이 비교됩니다.
피연산자 중 하나의 유형이 숫자 유형이고 다른 유형이 객체 유형이면 객체를 숫자 값으로 변환하고 숫자 비교를 수행합니다.
다음은 몇 가지 특별한 비교를 지정합니다.
null과 undefine은 동일합니다.
null 및 undefine은 다른 유형으로 변환되지 않습니다.
두 연산의 결과가 NaN이면 동등 비교는 false를 반환하고 불평등 비교는 true를 반환합니다. 두 피연산자가 모두 NaN이더라도 반환 결과는 여전히 false입니다. 즉, NaN은 NaN과 같지 않습니다.
두 피연산자가 모두 객체이면 참조하는 값을 비교하여 동일한 객체를 참조하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
alert(null == undefine); // true
alert(undefine == null); // true
alert(true == 1); >alert(false == 0); // true
alert(true == 2); // false
var obj =
alert(10 == obj); / false
완전히 동일한 비교 === 그러나 정확히 같지는 않음!==
완전히 동일한 비교가 변환 없이 동일한지 여부를 비교하는 데 사용됩니다. 예:
var a = " 100";
var b = 100;
alert(a == b); // true
alert(a === b); 🎜>= = 비교는 "100"이 먼저 숫자 100으로 변환된 다음 숫자 100과 비교되어 동일하므로 true를 반환합니다.
=== 문자열 "100"이 변환 없이 숫자 100과 동일하지 않기 때문에 비교는 false를 반환합니다.
!==는 변환 없이 동일한지 비교하는 데 사용됩니다.
alert(a != b); // false
alert(a !== b); // true
첫 번째 경우는 변환 후 false를 반환합니다. 두 번째 경우는 true를 반환합니다. 변환하지 않으면 하나는 문자열이고 다른 하나는 같지 않은 숫자이기 때문입니다.