FE dev/JavaScript

Javascript 타입종류

gmta 2022. 1. 10. 15:13
반응형

 

 

 

 

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

 

 

원시 타입

  1. 숫자(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; //참조값을 복사합니다.