자바스크립트_기초_2.9

HwiJeongLee·2021년 8월 15일
0

자바스크립트

목록 보기
13/28

비교 연산자

비교 연산자 종류

■ 보다 큼, 작음 < , >

■ 보다 크거나(작거나) 같은 <=, >=

■ 같음 ==

■ 같지 않음 !=

비교 연산자 반환

비교 연산자의 반환값은 불린형입니다. (true, false)

문자열 비교

자바스크립트는 문자열을 사전순으로 비교합니다.

단 대문자 'A', 소문자 'a'를 비교한다면 'a'가 더 큽니다.
즉 'a' > 'A' 가 true가 됩니다.

다른 형을 가진 값 간의 비교

비교하려는 자료형이 다르다면 이를 숫자형으로 바꿉니다.

'2' -> 2
'01' -> 1로 변환된 후 연산이 수행됩니다.

일치 연산자

'==' 이 연산자는 0과 false를 구분하지 못합니다.
왜냐하면 == 연산자는 형이 다른 피연산자를 비교할 때 숫자형을 바꾸기 때문입니다.

0 == false // true
'' == false // true

이 때, 값과 자료형의 동등 여부까지 확인하고 싶다면 === 을 사용하면 됩니다.
0 === false // fasle ( 자료형이 같지 않기 때문에)

즉, ===은 ==의 엄격한 버전입니다.
마찬가지로 !===은 !=의 엄격한 버전입니다.

JS에서 유의해야 하는 연산!

null vs undefined

null === undefined // false
null == undefined // true

null과 undefined를 비교하면 특별한 규칙이 적용되어 같은 것으로 취급된다. 즉 이 둘을 커플로 취급하는데 자료형은 다르므로 엄격 보드의 === 연산을 하면 false가 출력된다.

null은 숫자형으로 0
undefined는 숫자형으로 NaN으로 변환됩니다.

예외!!!!!!
alert( null > 0 ); // (1) false
alert( null == 0 ); // (2) false
alert( null >= 0 ); // (3) true

분명 null은 0으로 숫자 변환된다고 했는데 왜 2번은 fasle, 3번은 true일까?

= > <= < 이런 연산자는 모든 피연산자를 숫자형으로 반환합니다.
하지만 == 연산자는 null과 undefined를 반환하는 순간을 제외하고
null과 다른 숫자를 비교할 때는 숫자형으로 형변환을 하지 않습니다.

비교가 불가능한 undefined
alert( undefined > 0 ); // false (1)
alert( undefined < 0 ); // false (2)
alert( undefined == 0 ); // false (3)

undefined는 null을 제외한 그 어떠한 것과도 비교가 불가능하다.

연습문제

5 > 4 ->true
"apple" > "pineapple" ->false , 사전순으로 나열된다. p가 더 크다.
"2" > "12" ->true , 문자열이므로 사전순!

만약 2 > "12" 라면 자료형이 다르므로 모두 숫자형으로 변환하고 값을 비교한다. 이때는 false가 된다.

undefined == null ->true , 위의 설명 참고
undefined === null ->false, 위의 설명 참고
null == "\n0\n" ->false , 이는 null==0을 의미하는데 == 연산자일때는 null을 0으로 숫자 변환하지 않는다.
null === +"\n0\n" ->false , 위와 같은 이유이다.

profile
초보 개발자의 개발 공간

0개의 댓글