Code States TIL 2일차-Boolean, 조건문
2일차에는 Boolean과 조건문, string에 대해 배웠습니다.
Javascript는 기본적으로 autocasting을 지원하다보니 타입이 다른 두 변수를 비교하면 자동적으로 casting하여 원치않는 결과가 나올 때도 있다고 합니다. 예를 들면
100=='100'//정수 100과 string 100의 비교. 참이 나온다.
와 같이 string과 정수를 비교해도 참이라는 결과를 내놓습니다.
이런 점 때문에 여러 요소들이 false로 취급되기도 합니다. 일단 기본적으로 0에서 시작해서 0을 string으로 만든 '0', array로 만든 [0], [[0]]..., Null pointer이기도 하므로 null, null과 유사한 undefined,마찬가지로 null과 유사한 empty string과 array '', [], [[]], ...., NaN 등이 false로취급됩니다. 이중 NaN의 경우는 어떤 것과 비교해도 false가 나옵니다. 심지어 NaN===NaN의 경우도 false가 나옵니다. NaN외에도 여기 속하는 것들끼리 서로 비교한다고 같은 것으로 취급되지는 않습니다.(autocasting하기 애매해서 그런것일까요)
'0'==[] // string 0과 empty array의 비교. 결과는 false이다.
아마 '0'이라는 string을 array로 변환해서 [0]과 비교하나 봅니다. 비어있는 array와 0이라는 원소를 갖는 array는 다르니까요.
이처럼 ==연산은 자료에 대한 이해를 필요로 하며 예상치 못한 결과를 낳는 경우도 있기 때문에 사용에 주의가 필요합니다. 대신 이러한 autocasting을 사용하지 않는 비교연산 ===이 있습니다.(부정은 !== 이라고 합니다.)
if문의 사용은 C와 차이가 없었습니다.
Author And Source
이 문제에 관하여(Code States TIL 2일차-Boolean, 조건문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@eastlit/Code-States-TIL-2일차-Boolean-조건문저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)