본문 바로가기
Frontend/Javascript

Javascript - 데이터 타입

by 취업하고싶다! 2025. 1. 2.

 

 

원시타입과 객체타입

원시타입

  • 숫자타입(number): 숫자. 정수와 실수 구분없이 하나의 숫자타입만 존재
  • 문자열타입(string): 문자열
  • 불리언타입(boolean): 논리적 참, 거짓
  • undefined타입: var키워드로 선언된 변수에 암묵적으로 할당되는 값
  • null타입: 값이 없다는 것을 의도적으로 명시할 때 사용하는 값
  • 심벌타입(symbol): ES6에서 추가된 7번째 타입(다른 값과 중복되지 않는 유일무이한 값)

객체타입: 원시타입을 제외한 모든 것

 

 

Symbol타입

  • 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용
  • 심벌은 Symbol 함수를 호출해 생성한다.
    • 이 때 생성된 심벌 값은 외부에 노출되지 않는다.
    • 또한, 다른 값과 절대 중복되지 않는 유일무이한 값
var key = Symbol('key');
console.log(typeof key);  // symbol

// 객체 생성
var obj = {};

// 이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 "프로퍼티 키"로 사용
obj[key] = 'value';
console.log(obj[key]);  // value

 

 

데이터 타입이 필요한 이유

1️⃣ 값을 저장할 때 확보해야 하는 "메모리 공간의 크기"를 결정하기 위해서
2️⃣ 값을 참조할 때 한 번에 읽어 들여야 할 "메모리 공간의 크기"를 결정하기 위해서
3️⃣ 메모리에서 읽어 들인 "2진수를 어떻게 해석"할지 결정하기 위해서

 

 

동적 타이핑

자바스크립트 변수는 선언이 아닌 할당에 의해 타입이 결정(= 타입 추론(type inference))된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다. 이러한 특징을 동적 타이핑(dynamic typing) 이라고 한다.

  • 이 관점에서, 변수는 타입을 가질까 ? 라는 질문
    • 기본적으로 변수 자체는 타입을 갖지 않는다.
    • 하지만, 값은 타입을 갖는다.
    • 따라서, 현재 변수에 할당되어 있는 값에 의해 변수의 타입이 동적으로 결정된다고 표현하는 것이 적절하다. 변수는 단지 값에 묶여있는 값에 대한 별명이기 때문
  • 자바스크립트는 정적 타입 언어 와 다르게 타입을 선언하지 않는다.
    • 다만 var, const, let 키워드를 사용해 변수를 선언할 뿐
    • 실질적인 값의 타입은 런타임(runtime)시 할당되는 값에 의해 결정된다.

 

동적 타이핑 언어 단점

동적 타입 언어는 유연성(flexibility) 은 높지만 신뢰성(reliability) 은 떨어진다.

  • 개발자의 의도와는 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동으로 변환되기도 한다.
  • 복잡한 프로그램에서는 변화하는 변수 값을 추적하기 어려울 수 있다.
  • 값의 변경에 의해 타입도 언제든지 변경될 수 있다. → 동적 타입 언어의 변수는 값을 확인하기 전에는 타입을 확신할 수 없다.

'Frontend > Javascript' 카테고리의 다른 글

Javascript - 변수  (0) 2025.01.02
Javascript - Scope, Closure  (0) 2024.12.23
Javascript - 이벤트 버블링, 캡쳐링  (0) 2024.12.23
Javascript - var, let, const, Hoisting  (0) 2024.12.23
Javascript - async/await  (0) 2024.12.22