형이 다른 값끼리 비교할 때 피연산자의 자료형을 숫자형으로 바꾼 후 비교를 진행합니다.
기타 비교 연산자들 < > <= >= 역시 피연산자의 자료형을 숫자형으로 바꾼 후 비교를 진행합니다.
<script>
let i;
i = 5 < 4;//~보다 작다. 거짓 false == 0 (boolean)
i = 5 > 4;//~보다 크다. 참 true == 1 (boolean)
i = 5 == 4;//같다. false
i = 5 != 4;//같지 않다. true
i = 5 <= 4;//작거나 같다. false
i = 5>=4;//크거나 같다. true
</script>
<script>
i = `korea` > `america`;// true. 11k > 1a (유니코드 순서)
i = `apple` > `ape`;// true. 첫번째 자리수가 동일하면 두번째 자리수 비교, 두번째 자리수 동일하면 세번째 자리수 비교
i = `한글` > `영어`; // true
i = `한글` > `english`;// true
</script>
<script>
console.log(1 == true); // true
console.log(`345` == 345); // true *숫자형 문자열은 자동변환되어 비교*
console.log(`15` > "12"); // true
console.log(`01` == 1); // true
// 일치 연산자는 0과 false를 구별하지 못함
console.log(0 == false); // true
console.log("" == false); //true
console.log("" == 0); //true
</script>
<script>
-null과 undefined 끼리는 *true*
console.log(null == undefined); //true
-null, undefined의 각 각 비교값은 대부분 false
console.log(`` == null); //false
console.log(0 == null); //false
console.log(0 >= null); //*true* 0은 null보다 크거나 같다. 동등 연산자 이외의 비교 연산자는 null을 숫자형으로 변환한다(0으로)
</script>
<script>
-null과 undefined 끼리는 *true*
console.log(null == undefined); //true
-null, undefined의 각 각 비교값은 대부분 false
console.log("" == undefined); //false
console.log(0 == undefined); //false
console.log(0 >= undefined); //false. >인 경우 숫자형 변환은 null만 해당(null=0). (undefined = NaN) undefined는 숫자로 변환x
</script>
<script>
console.log(`123` === 123); //false 데이터의 타입이 다름
console.log(`` === 0); // false. 문자열과 숫자이기 때문
console.log(0 === false); // false. string과 boolean
console.log(null === undefined); // false. 데이터의 타입이 다름(null과 undefined는 어디에도 속해있지 않은 각자의 데이터 값)
</script>
<script>
!== 데이터 타입까지 완전히 같진 않다.
console.log(`` == 0); //true
console.log(`` != 0); //false
console.log(`` !== 0); //true 데이터의 종류는 같지 않다.
console.log(null !== undefined); //true
</script>
일치 연산자(===)를 제외한 비교 연산자의 피연산자에 undefined나 null이 오지 않도록 하자
또한, undefined나 null이 될 가능성이 있는 변수가 <, >, <=, >=의 피연산자가 되지 않도록 하자