![](https://velog.velcdn.com/images/gazero_/post/74733f22-dfd1-470c-a9db-bab234c30c43/image.png)
원시타입(Primitive Type)
한번에 하나의 값만 가질 수 있음, 하나의 고정된 저장 공간을 이용
let number = 12;
비원시타입(Non-Primitive Type)
한번에 여러 개의 값을 가질 수 있음, 여러 개의 고정되지 않은 동적 공간 사용
let array = [1, 2, 3, 4];
원시타입 - 숫자타입
![](https://velog.velcdn.com/images/gazero_/post/3834e2a3-33f7-4cde-8868-12f62bcee639/image.png)
정수, 실수(소수), 무한대, 음의 무한대, NaN 가능
문자
![](https://velog.velcdn.com/images/gazero_/post/bb332de8-e35b-439b-9593-5831ae90c814/image.png)
- ""안에 영어/ 한국어 모든 문자 다 가능
- ``백틱(백키) 사용 가능
이 경우, template literal:${변수명}을 사용할 수 있음
boolean 타입
![](https://velog.velcdn.com/images/gazero_/post/93005e10-f1ed-49b5-a7e4-b310ba3e3b6b/image.png)
- true / false 구분하는 타입
null
![](https://velog.velcdn.com/images/gazero_/post/4fde2872-7bc3-4358-9ed2-e7486d83ea12/image.png)
다른 언어에 빈 값을 초기화해서 선언하고 그 값을 조회 했을때 null 값이 나옴. 하지만 자바스크립트에서는 undefined가 조회되고, null 값을 넣어줘야 null이 나옴
의도적으로 이 변수의 값에는 아무 것도 없다(=null) ! 를 나타내고 싶을때 null을 씀 !
형변환
![](https://velog.velcdn.com/images/gazero_/post/18007683-c5bb-4d1f-9e25-9501e056af0c/image.png)
- numA안에는 숫자 타입 5, numB안에도 숫자 타입 10으로 사칙연산이 가능해서 두 값을 곱한 값을 조회하면 50이 출력됨
- 그런데, numC에는 숫자 타입 15, 그리고 numD에는 문자 타입 "2"가 들어있음 타입이 다른데 사칙 연산이 가능할까?
- 가능 30이 조회됨
- 왜냐? 적절하게 자료형을 조회해서 알아서 묵시적 형변환(문자형->숫자형)을 해줌
반면에 !
![](https://velog.velcdn.com/images/gazero_/post/111167ca-5459-472a-9cc7-82fc3d622fe9/image.png)
- 숫자타입 15와 문자 타입 "2"를 더하면 당연히 15+2로 17이 출력될 것 같은데?
- 아님. "15" + "2" 문자 더하기 문자로 152가 출력됨
parseInt로 명시적형변환 해주면 !
![](https://velog.velcdn.com/images/gazero_/post/196afcb5-06ec-455f-a040-6db73ac52e23/image.png)
- 문자열 타입의 값을 받아서 숫자타입으로 돌려주는 역할
- numD에 있는 문자형 "2"를 숫자타입인 2로 형변환하여 사칙연산이 가능해짐 !