JavaScript 기본 | 값 | 원시 값

Faithful Dev·2025년 5월 20일
0

프리스쿨

목록 보기
21/25

원시 값(Primitive Value)이란?

원시 값은 더 이상 나눌 수 없는, 기본적인 데이터 단위이다.
값 자체가 변수에 저장되며, immutable (불변)하다. 즉, 한 번 만들어진 원시 값은 변경될 수 없다.


자바스크립트의 원시 타입 종류

자바스크립트에는 총 7가지 원시 타입이 있다:

타입설명예시
string문자열'hello', "world"
number숫자 (정수, 실수 포함)42, 3.14
bigint아주 큰 정수 (ES2020 도입)123456789012345678901234567890n
boolean참/거짓true, false
undefined정의되지 않은 값let x; (초기화 안 된 변수)
null명시적인 "없음" 또는 "비어 있음"let y = null;
symbol고유한 식별자 생성용 (ES6 도입)Symbol('id')

특징 정리

불변성 (Immutability)

let str = 'hello';
str[0] = 'H'; // 시도는 가능하지만 실제 값은 변하지 않음
console.log(str); // 'hello'

문자열을 바꾸는 것처럼 보여도, 실제로는 새로운 문자열이 생성된다.


값 복사 (값 전달)

원시 값은 값 자체가 복사되기 때문에, 다른 변수에 할당해도 원본은 영향받지 않는다.

let a = 10;
let b = a;
b = 20;
console.log(a); // 10

ab는 서로 완전히 독립적인 값이다.


타입 확인

typeof 연산자를 사용하여 원시 타입을 확인할 수 있다:

typeof 'hello';    // 'string'
typeof 42;         // 'number'
typeof true;       // 'boolean'
typeof undefined;  // 'undefined'
typeof null;       // 'object' ← 이건 JS 언어 설계상의 오래된 실수
typeof Symbol();   // 'symbol'
typeof 123n;       // 'bigint'

원시 값과 객체의 차이

구분원시 값객체 (참조 타입)
저장 방식값 자체메모리 참조 (주소)
복사 방식값 복사참조 복사 (얕은 복사)
변경 가능성불변변경 가능 (mutable)

예시: 문자열은 원시 타입인데 메서드를 쓸 수 있는 이유?

let name = "John";
console.log(name.toUpperCase()); // "JOHN"
  • 문자열은 원시 타입이지만, 메서드를 호출하면 자바스크립트 엔진이 내부적으로 String 객체로 일시적으로 래핑(wrapping)한다.
  • 이걸 "박싱(Boxing)"이라고 부른다.
  • 이후 메서드 실행이 끝나면 다시 원시 값으로 돌아간다.

요약

특징설명
불변수정 불가. 새 값으로 대체만 가능
값 복사변수 간 할당 시 값 자체가 복사됨
7가지 타입string, number, bigint, boolean, undefined, null, symbol
메모리 사용 효율성객체보다 가볍고 빠름
profile
Turning Vision into Reality.

0개의 댓글