제로초 JAVASCRIPT 2-6 자료형 -불 값 (boolean / true, fasle)

Yumin Jung·2023년 7월 15일
0

제로초의 JAVASCRIPT

목록 보기
8/18

boolean

불 값은 단순히

TRUE / FALSE

로 나누어 진다.

어떤 언어에서는 1을 TRUE로, 0을 FALSE로 대응시키는데, JS에서는 따로 TURE, FALSE가 존재한다. 문자열이 아니라서 따옴표를 사용하면 안된다.

typeof true

결과 : boolean

불 값으로 참, 거짓을 판단한다.

5>3
결과 : TRUE

5<=4
결과 : FALSE

NaN == NaN
결과 : FALSE
(NaN만 유일하게 비교연산자를 사용하여(!= 연산자 제외) 나(자기자신)와 나를 비교했을때, FALSE가 나온다.)

TRUE > FALSE
결과 : TRUE
숫자가 아니라고 그랬는데 비교가 되네. TRUE=1 / FALSE=0 이라고 생각하자. 자바스크립트의 단점.
근데, 자주 쓰다보면 신기하게도 외워짐.

'b' > 'a'
결과 : TRUE
사전 순.

특수문자도 가능.
ex) '&'.charCodeAt()
결과 : 65286

문자열과 숫자의 크기를 비교한다면?
ex) '3' < 5
결과 : TRUE
문자열 3을 숫자형 3으로 바꿔서 비교한다.
ex) 'abc' < 5
결과 : FALSE
문자열인 abc를 숫자형으로 바꾸면 NaN이 된다.
NaN과 5를 비교하여 FALSE가 된다.

현실세계와 안 맞는 것들이 너무 많다.
그런데, 잘 생각해보면 논리적인 이유가 있다.

논리적 이유

예를 들어, 문자형과 숫자를 더할 때에는 문자열이 우선순위로서 전에 배웠던대로

ex) '수민이' + 0304
결과 : 수민이0304

0304가 문자열로 바뀌어 더해진다.

문자열과 숫자를 더하기를 제외한 연산 시, 이번 장과 같이 숫자가 아닌 것들을 숫자형으로 바꾸어 NaN이 되고 NaN과 어떠한 숫자던지 비교하면 FALSE가 된다.

== / ===

ex) '1' == 1
결과 : TRUE

ex) 1 == TRUE
결과 : TRUE

이렇게 모양이 달라도 앞에서 배웠듯이 자동으로 형 변환하여 비교하기 때문에 TRUE가 나온다.

하지만, 대부분의 언어가 지원이 되지 않는 기능인 === 연산자는 값을 비교할 때 값 뿐만 아니라 자료형까지도 같은지 비교한다.

ex) '1' === 1
결과 : FALSE

ex) 1 === TRUE
결과 : FALSE

결론 ! 웬만하면 === 연산자를 사용하는 것이 낫다. 사람에게 좀 더 직관적이기 때문에.

추가

ex) 1 != '1'
결과 : FALSE

ex) 1 !== '1'
결과 : TRUE

profile
문과를 정말로 존중해

0개의 댓글