*고승원 바닐라 자바스크립트 책 여러 사이트를 보고 공부하고 쓴글입니다.
도움 받은 사이트는 내용 가장 하단에 링크 걸어두었습니다.*
INDEX
- 데이터 타입(data type)
- 원시 타입(primitive type)
- 참조 타입 Or 객체 타입(reference type, object type)
- typeof() 연산자
데이터 타입(data type)
- 데이터 타입은 값의 종류를 의미하며, 그 종류에는 숫자, 문자열 등이 존재한다.
- 원시 타입(기본 타입, primitive type)과 참조 타입(객체 타입, reference type)으로 구성된다.
원시 타입(primitive type)
- 값을 저장하는 데이터 타입이다.
- 원시타입은 값을 변형할 수 없는 불변성(immutable)을 가진다.
- 따라서 새로운 값을 다시 할당할 수는 있어도 있던 값을 변형하는 것은 불가능하다.
-> 값을 교체할 수는 있으나 변형은 안된다.
설명)
- 2번째 줄에서 a.toString()으로 a의 값인 25를 문자열로 변환하려 했으나, 3번째 줄에서 콘솔로 확인해 본 결과 값이 바뀌지 않았다.
- 4번째 줄에서 a의 값을 a = a.toString()으로 재할당하여 값을 교체, 5번째 줄 콘솔에서 타입이 문자열로 바뀐 것을 확인할 수 있다.
- 값이 변화한 것으로 보일 수 있지만 새로운 메모리에 값이 재할당 된 것이다.
원시 타입인 데이터 타입 종류
- String(문자열)
- Number(숫자)
- BigInt
- Boolean(참 / 거짓)
- Undefined
- Null
- Symbol
String(문자열)
- 텍스트 데이터를 나타낼 때 사용한다.
- 문자열(String)을 쌍 따옴표(" ") 또는 홑 따옴표(' ')로 감싸 변수로 할당한다.
Number(숫자)
- 숫자를 표현할 때 사용한다. (범위 : -2^53 - 1 ~ 2^53 + 1)
- C언어 등 다른 프로그래밍 언어와 다르게 숫자 타입을 구분하지 않는다.
(C언어의 경우에 숫자를 정수형, 실수형 등(integer, short, float)으로 구분하여 사용)
- 문자열 데이터와는 다르게 따옴표를 사용하지 않고 변수를 할당할 수 있다.
- 64비트 부동소수점 형태로 저장한다.
- 부동소수점 숫자 형태 외에도 +infinity(양의 무한대), -infinity(음의 무한대), NaN(Not a Number)의 값을 가진다.
BigInt
- Number가 나타낼 수 있는 범위보다 더 큰 정수를 표현할 수 있는 객체.
- 정수 뒤 n을 붙이거나, BigInt() 생성자를 호출하여 생성할 수 있다.
Boolean(참/거짓, 논리형)
- 참/거짓을 나타내는 데이터 타입이다.
- 참은 true, 거짓은 false로 나타낸다.
Undefined
- 데이터 타입이자 데이터 값, 아무 값도 존재하지 않는다는 표현
- 값을 할당하지 않은 변수는 Undefined값을 갖는다.
Null
- 값이 존재하지 않는다를 명시할 때 사용한다.
- Undefined와는 다르게 의도적으로 값이 '없음'을 설정한다.
- 어떤 값이 할당될지 모를 때 사용한다.
Symbol
- ES6에 새로 추가된 데이터 타입이다.
- 변경이 불가능하며 고유한 값을 갖는다.
- 스크립트에서 충돌이 일어나지 않도록 유일한 속성 키를 만들 때 사용한다.(객체의 key로 사용 가능)
- Symbol() 생성자를 사용하여 키를 만든다.
* 객체를 모른다면 아래 객체 내용을 먼저 확인하고 읽는 것을 권장합니다.*
참조 타입(or 객체 타입 reference type)
- 기본 타입을(null, number,....) 제외한 모든 값이다.
- 대표적으로 함수, 배열, 객체 등이 있다.
- 하나의 값만 가질 수 있는 원시 타입과는 다르게 여러 값을 가지는 것이 가능하다.
- 값이 아닌 주소를 저장하는 형태이다.
- 원시 타입은 불변한 값을 갖지만, 참조 타입은 주소를 참조하기 때문에 값을 재할당 할 경우 주소를 참조한 모든 값에 영향이 생긴다.
설명)
- obj라는 객체를 생성한 후 obj2에 복제
- 복제 후 obj2에 key 값과 value값을 부여하여 값을 변화시켰다.
- obj2 뿐만 아니라 obj 안에 있는 값도 변화가 생긴다.
참조 타입인 데이터 타입 종류
- Object(객체)
- Array(배열)
- Function(함수)
- etc.....
위 타입들은 중요하기 때문에 다시 다룰 예정이다.(함수는 연산자, 조건문을 다룬 이후에 글을 쓸 예정)
Object(객체)
- 키(Key)-값(value) 쌍으로 데이터를 저장한다.
- 객체의 키를 이용해서 데이터의 값을 변경하거나 가져오는 것이 가능하다.
- 객체의 키 값은 문자형, 숫자형 등 자바스크립트의 모든 객체를 값으로 사용할 수 있다.
- 객체로 함수, 배열의 값을 가질 수 있다.
- 객체는 { } 안에 담는다.
Array(배열)
- 하나 이상의 다중 데이터를 저장하는 데 사용한다.
- 여러 값을 하나의 단일 참조(single reference)로 저장할 수 있도록 해주는 구조이다.
- 주로 성격이 비슷한 값을 하나의 변수에 담고 싶을 때 사용한다.
ex) let mbti = ["esfp", "isfj", "enfp", "entp",....]
- 배열은 객체와 마찬가지로 자바스크립트의 모든 객체를 값으로 가질 수 있다.
typeof() 연산자
- 변수의 데이터 타입을 확인하고 싶을 때 사용하는 연산자이다.
- "typeof 확인할 데이터 타입"의 형태로 확인한다.
ex) typeof 10, typeof "lee"
* 배열도 자바스크립트 내에서는 객체이기 때문에 object라는 데이터 타입을 갖게 된다.
도움받은 사이트
surim's devlog - javascript data type
MDN Web Docs - JavaScript의 타입과 자료구조
'프론트엔드 > JAVASCRIPT' 카테고리의 다른 글
[Javascript] Javascript 비교 연산자 (0) | 2022.09.10 |
---|---|
[Javascript] Javascript 할당 연산자 (0) | 2022.08.06 |
[Javascript] Javascript 변수 선언 var, let, const(상수) (0) | 2022.05.23 |
[Javascript] Javascript 콘솔(console), 주석 처리 (0) | 2022.05.20 |
[Javascript] Javascript 선언 위치, 외부 스크립트 (0) | 2022.05.18 |