자바스크립트의 데이터 타입은 원시 타입(primitive type)
과 참조타입(reference type)
으로 분류할 수 있습니다.
원시 타입(primitive type)
데이터 타입 | 설명 |
---|---|
숫자 타입 (Number) | 숫자,정수와 실수 구분 없이 하나의 숫자 타입만 존재 |
문자열 타입 (String) | 문자열 |
불리언 타입 (Boolean) | 논리적 참(true)과 거짓(false) |
undefined 타입 | 변수에 값이 할당되지 않은 상태 |
null 타입 | 값이 없다는 것을 의도적으로 명시 |
심벌 타입 (Symbol) | 충돌 위험이 없는 유일한 객체의 프로퍼티 키 |
참조타입(reference type)
데이터 타입 | 설명 |
---|---|
객체 타입 | 객체, 함수, 배열 등... |
C언어, 자바의 경우 정수
와 실수
를 구분해서 int
, long
, float
, double
등과 같은 다양한 숫자 타입을 제공하지만 자바스크립트에서는 하나의 숫자 타입
만 존재합니다.
// 모두 숫자 타입입니다.
var integer = 10; // 정수
var double = 10.12; // 실수
var negative = -20; // 음의 정수
자바스크립트는 모든 수를 실수
로 처리합니다.
console.log(1 === 1.0) // true
텍스트 데이터
를 나타내는데 사용하며 작은따옴표('')
, 큰따옴표("")
, 백틱(``)
으로 텍스트를 감싸서 표현합니다.
자바스크립트에서 가장 일반적인 표기법은 작은따옴표
입니다.
var string;
string = '문자열';
string = "문자열";
string = `문자열`;
논리적 참, 거짓을 나타내는 true
와 false
로 표현합니다.
var bool;
bool = true;
bool = false;
개발자가 의도적으로 할당하기 위한 값이 아니라
자바스크립트 엔진이 변수를 초기화 할 때 사용하는 값입니다.
var foo;
console.log(foo) // undefined
변수에 값이 없다는 것을 의도적으로 명시
할 때 사용합니다.
var foo = null;
console.log(foo) // null
다른 값과 중복되지 않는 유일무이
한 값입니다.
주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용됩니다.
참조 타입은 객체
, 배열
, 함수
등이 있습니다.
var obj = {}; // 객체
var arr = []; // 배열
function foo () {} // 함수
프로그래밍 언어에는 두 가지정적 타입 언어
과 동적 타입 언어
이 있습니다.
정적 타입 언어
에는 C, C++, 자바, 코틀린 등이 있으며, 변수를 선언할 때 데이터 타입을 사전에 선언해야 합니다.
동적 타입 언어
에는 자바스크립트, 파이썬, 루비 등이 있으며, 변수를 선언할 때 데이터 타입을 선언하지 않습니다.
자바스크립트의 변수에는 어떤 데이터 타입의 값이라도 자유롭게 할당할 수 있으므로 정적 타입 언어
에서 말하는 데이터 타입과 개념이 다릅니다.
정적 타입 언어
는 변수 선언 시점에서 변수의 타입이 결정되고 변수의 타입을 변경할 수 없는
반면,
동적 타입 언어
에서는 값을 할당하는 시점에서 변수의 타입이 동적으로 결정
되고 변수의 타입을 언제든지 자유롭게 변경할 수 있습니다.
정리하자면 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입 추론
)되고, 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있습니다. 이러한 특징을 동적 타이핑
이라고 합니다.
틀린 부분이 있거나 보충해야 할 내용이 있다면 댓글이나 DM(sungstonemin)으로 알려주시면 감사하겠습니다😄