Code States TIL 2일차-Boolean, 조건문

1328 단어 JavaScriptJavaScript

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와 차이가 없었습니다.

좋은 웹페이지 즐겨찾기