프로그래밍 언어에서 빠질 수 없는 부분 중 하나가 바로 데이터 타입 (Data Type)이다. 변수에 연산을 적용하기 위해서는 타입에 대하여 아는 것이 중요하다. 데이터 타입 없이, 컴퓨터는 다음을 해결할 수 없다
JavaScript의 타입
JavaScript 언어의 타입은 원시 값 (Primitive Type)과 객체 (Object/Reference Type)로 나뉘며 별도의 선언 없이 변수에 대입한다
- 원시 값 (언어의 최고 로우레벨에서 직접 표현되는 불변 데이터)
- Number
- String
- Boolean
- Null
- Undefined
- Symbol
- 참조 타입(객체)
- 객체
- 배열
- 함수
- 정규 표현식
원시 값 (Primitive Type)
객체를 제외한 모든 타입은 불변 값 (변경할 수 없는 값)을 정의하며 문자열은 불변한다 즉, 원시 타입의 값은 변경 불가능한 값이며 이런 일련의 타입을 원시 값이라고 한다
Number (숫자) 타입
ECMAScript는 Number 와 BigInt 두 가지의 내장 숫자 타입을 가지고 있다
Number 데이터 타입은 배정밀도 64비트 이진 형식 숫자를 의미하며 보통은 정수와 소수, 지수 모두 Number라는 데이터 타입으로 저장된다
const num1 = 10; // Integer
const num2 = 3.14; // Float
const num3 = 2e3; // exponential
const num4 = -10;
console.log(num1/0); // Infinity
console.log(num4/0); // -Infinity
console.log(’a’/3); // NaN
이때, Number 타입은 부동소수점 숫자 외에도 Infinity , -Infinity , NaN가 있다.
0으로 어떤 수를 나눌 수 없으므로 이때 리턴되는 값은 무한대 혹은 음의 무한대로 나타낸다. 그리고 계산할 수 없음을 의미하는 NaN이 있다
String (문자열) 타입
JavaScript의 String 타입은 ‘텍스트 데이터를 나타낼 때 사용' 한다 즉, 문자열을 나타내는 타입이다. 16비트 유니코드 문자셋(UTF-16)으로 구성된 집합으로, 각각의 요소가 String의 한 자리를 차지한다
문자열은 Single quotes / Double quotes / Backticks 세 가지로 표현이 가능하다
const name = ‘aaa’;
const number = “10”;
const result = My name is ${name} and number is ${number};
console.log(result);
Single quotes와 Double quotes는 모두 동일하게 String 데이터 타입으로 지정된다. Backticks도 마찬가지지만 추가적인 기능이 있다 바로 ${variable or expression}이다. $와 함께 내부에 변수명이나 표현을 적어주면 그 값을 그대로 출력해 주는 것을 알 수 있다
Boolean (논리형) 타입
Boolean 타입은 논리 요소를 나타내며 참, 거짓을 표현하는 데이터 타입이다. True 혹은 False 두 가지의 값을 가질 수 있다
null 타입
null 타입은 의도적으로변수에 값이 없다는 것을 명시할 때 사용한다
null 타입의 typeOf 연산 결과는 null이 아니라 object이므로 주의하며 대소문자를 구별하므로 null은 Null 혹은 NULL등과 다르다. 따라서 null 타입을 확인할 때믄 typeOf 연산자 대신 일차 연산자인 ‘===’를 사용하여야 한다
Undefined 타입
Undefined 데이터 타입은 선언 이후 값을 할당하지 않은 변수는 undefined값을 가진다. 어떤 변수를 만들고 그 값을 정의해주지 않았을때나 존재하지 않는 객체 프로퍼티에 접근할 경우 undefined가 반환된다
null vs undefined
- undefined는 단어의 의미 그대로 정의되지 않음 / 값이 대입되지 않은 상태를 위해 사용
- null 값은 undefined와 다르게 의도적으로 값이 없음을 표현하고 싶을 때 대입
Symbol 타입
Symbol 타입은 ES6부터 새로 생긴 데이터 타입이며 고유하고 변경 불가능한 유일한 값을 생성할 때 사용된다. 값 자체의 확인이 불가하여 외부로 노출되지 않으며 주로 이름의 충돌 위험이 없는 유일한 객체의 Property Key를 만들기 위해 사용된다
// 심볼 key는 이름의 충돌 위험이 없는 유일한 객체의 프로퍼티 키
var key = Symbol('key');
console.log(typeof key); // symbol
var obj = {};
obj[key] = 'value';
console.log(obj[key]); // value
객체 (Object) 타입
Object 데이터 타입은 복잡한 형태의 값들이 묶여있는 데이터를 의미한다 즉, 데이터와 그 데이터에 관련된 동작(절차, 방법, 기능)을 모두 포함할 수 있는 개념적 존재이다.
- Property와 Method를 포함할 수 있는 독립적 주체
JavaScript는 객체 기반의 스크립트 언어로 이루고 있는 거의 모든 것이 객체이며 타입을 제외한 나머지 값들(배열, 함수, 정규표현식)은 모두 객체이다
출처 : 아래의 사이트들을 보면서 큰 공부 하였습니다
https://koonsland.tistory.com/115
https://velog.io/@surim014/웹을-움직이는-근육-JavaScript란-무엇인가-part.2
https://curryyou.tistory.com/182
https://developer.mozilla.org/ko/docs/Web/JavaScript/Data_structures#객체
https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Grammar_and_types
'Front-End > JavaScript' 카테고리의 다른 글
[JavaScript] 스코프 (Scope) (0) | 2022.03.07 |
---|---|
[JavaScript] Hoisting (호이스팅) (0) | 2022.03.05 |
[JavaScript] 기본 문법 (0) | 2022.03.02 |
[JavaScript] DOM (Document Object Model) (0) | 2022.03.02 |
[JavaScript] 정의 & 특징 (0) | 2022.03.01 |