javascript 33가지 기본 컨셉: 4. Type Conversion

2019. 3. 26. 13:54javascript/Basic Conception

javascript 33가지 기본 컨셉: 4. Type Conversion

항상 애용하고 있는 노마더코드 니콜라스 선생님이 새로운 강의를 시작하셨는데 나름 흥미가는 주제라 하루에 하나씩( 진짜 특별한 일이 없으면 이를 지킬려고 노력할 것이다.) 포스팅할 것이다. 나도 다른 사람의 강의 혹은 깃을 보고 하는 거라서 url을 첨부해놓는다. 


youtube: https://www.youtube.com/watch?v=QkFkFqg-J04
git: https://github.com/leonardomso/33-js-concepts


javascript는 어떠한 연산이 발생할 때 다른 타입이 있다면 강제로 변환해준다. 


예시) 


1. int + boolean



신기하게도 숫자랑 연산을 할때는 true는 1 false는 0을 뜻하는 것을 볼 수 있다. 


2. int + String



+ 연산이 있을 때는 그냥 하나의 문자열로 통합해버리고 -연산은 잘못된 계산 값인 Nan을 반환해준다. 그리고 세번째는 4를 네번째에는 13을 반환한다. 그 이유는 자바스크립트는 왼쪽부터 읽기 때문에 세번째는 숫자 1과 3을 읽은 것이고 네번째에는 hihi와 1이 합쳐진 문자열이 3을 만나서 13으로 반환된 것이다. 



-연산일 때는 그냥 숫자 계산 하는 것을 알 수 있다. 



3. compare true, false


true와 false와 일반 데이터형의 뭐가 참이고 거짓인지 알아보자



이중에서 가장 신기했던 것은 true ""와 다르다는 것이다. 물론 문자열에 띄어 쓰기가 들어가도 false가 반환된다. 값이 존재해야 한다.


4. === VS ==



위에서 보면 타입이 변환되어 사용된 경우가 있었다. ===는 conversation 없이 값을 비교해준다. 



==는 타입의 변화를 해주며 안의 값을 비교한다면 === 타입까지 판단하여 같은지 다른지 판단한다. 


하지만 아래와 같은 상황에서는 주의해야한다. 


위의 사진에서 당연히 될거 같은데 안되는 것이 있다. 


설명을 해보면 boolean형이 ==을 만나면 숫자로 변환이 된다. 그럼 문자열도 당연히 숫자로 변환이 될건데 

아래 사진을 보면 왜 이런 일이 발생하는지 알 수 있다. 



사진을 보고나면 당연히 NaN은 === 1이기 때문에 false가 되는 것을 알 수 있을 것이다. 


그래서 귀찮은 상황을 피하기 위해서는 각 데이터들의 타입들을 확실히 해주고 === 을 사용하도록 하자!!




Summary 


하나씩 시리즈를 연재해 갈 수록 이런 것도 돼??가 많아 진다. 내가 얼마나 얕게알고 있었나 반성하게된다. 이번 글에서는 다른 타입들 끼리 연산을 해줄 때 type이 conversation이 된다는 사실과 각종 연산 결과에 대해 알게 되었다. 그리고 평소에 if문에서 쓰던 ==와 ===의 차이점에 대해 알게 되었다.