Javascript 타입종류
- Javascript 타입 종류
- JS 메모리 주소 공간
- 동적 타입
- 원시 타입
- 참조 타입
JS 메모리 주소 공간
- 프로그램이 실행될 때 자바스크립트 엔진은 세 개의 메모리 공간을 가집니다.
- Code Area: 실행 예정인 JS 코드를 저장하는 공간입니다.
- Call Stack: 실행 중인 함수를 찾아 계산을 수행하고, 지역 변수를 저장합니다. 변수들은 LIFO(Last In First Out)형식으로 저장되며, 원시 타입들이 이 곳에 저장됩니다.
- Heap: 참조 타입들이 이 곳에 할당됩니다. Heap의 메모리 할당은 LIFO 형시에 따르지 않고 랜덤하게 들어갑니다.
동적 타입
- JS는 타입이 유연한 동적언어입니다.
- JS의 변수는 특정 타입과 연결되지 않으며 모든 타입의 값으로 할당 및 재할당이 가능합니다.
// 숫자형 변수 선언
let Variable = 10;
console.log(typeof Variable); // number
// 문자열 재할당
Variable = "string";
console.log(typeof Variable); // string
// 불리언 재할당
Variable = false;
console.log(typeof Variable); //boolean
원시 타입
- 숫자(Number)
- ECMA는 Number와 BigInt 두 가지 내장숫자 타입을 가지고 있습니다.
- 64비트 부동소수점 형식으로 모든 숫자를 실수로 처리합니다.
- 그외에도 +Infinity, -Infinity, NaN 3개의 상징적인 값을 가집니다.
0에 대한 표현값
- 0은 -0, +0 둘 다 표현이 가능합니다.
- +0 === -0 의 결과는 true 입니다.
- 하지만 나눗셈의 경우에는 결과의 차이가 있습니다.
10/0 // Infinity
10/-0 // -Infinity
- 문자열(String)
- 텍스트 데이터를 나타낼 때 사용합니다.
- 작은따옴표(''), 큰따옴표(""), 템플릿 리터럴(``)으로 문자열을 할당 가능합니다.
- ES6부터 도입된 템플릿 리터럴을 사용시 줄바꿈과 공백이 적용됩니다.
- 불리언(boolean)
- 논리의 요소를 나타내며 true/false 두 가지의 값을 가질 수 있습니다.
- 어떤 값이 의도적으로 비어있음을 표현하며 불리언 연산에서 false로 취급됩니다.
- Undefined
- 값을 할당하지 않은 변수는 undefined
값을 가집니다.
let Variable; // 값을 할당하지 않고 변수를 선언했습니다.
console.log(Variable) // "undefined" 출력이 됩니다.
- Null
- null
하나의 값만 가질 수 있습니다.
- Symbol
- ES6부터 새로 생긴 데이터 타입입니다.
- 변경이 불가능한 유일한 값을 생성할 때 사용하며, 값 자체의 확인이 불가하여 외부로 노출되지 않습니다.
let SymbolEx = Symbol('key');
console.log(typeof SymbolEx); // symbol
참조타입
- 변수에 할당할 때에 값이 아닌 '주소' 를 저장합니다.
- 객체가 저장되어있는 '메모리 주소'인 객체에 대한 '참조 값'이 저장됩니다.
- 배열, 객체, 함수가 대표적입니다.
//객체는 메모리 내 heap에 저장이 됩니다.
let refVar = {
name : "Son"
}
let refVar = { name : "Son" }
let admin = refVar; //참조값을 복사합니다.