코어 자바스크립트 - 1. 데이터 타입

suno·2022년 12월 4일
0
post-custom-banner

자바스크립트 데이터 타입

  • 기본형 (Primitie Type)
    • 숫자 (number)
    • 문자열 (string)
    • 불리언 (boolean)
    • null
    • undefined
    • 심볼 (Symbol)
  • 참조형 (Reference Type)
    • 객체 (Object)
      • 배열 (Array)
      • 함수 (Function)
      • 날짜 (Date)
      • 정규표현식 (RegExp)
      • Map, WeakMap
      • Set, WeakSet

변수와 식별자

  • 변수: 변경 가능한 데이터가 담길 수 있는 공간
  • 식별자: 변수의 이름

기본형과 참조형

기본적으로 기본형은 불변값이고 참조형은 가변값인데, 데이터를 저장하는 방식에 차이가 있다.

  • 기본형: 변수 영역 -> 데이터 영역
    변수를 선언하고 기본형 데이터를 할당할 때, 컴퓨터는 메모리의 빈 공간에 식별자를 저장하고, 별도의 공간에 기본형 데이터를 저장한 뒤 그 공간의 주소를 변수의 값 영역에 할당한다.

  • 참조형: 변수 영역 -> 데이터 영역 -> 객체의 변수 영역 -> 데이터 영역
    참조형 데이터를 할당할 때는, 참조형 데이터 내부 프로퍼티들을 위한 변수 영역을 별도로 확보해서 확보된 주소를 변수에 연결하고, 앞서 확보한 변수 영역에 각 프로퍼티의 식별자를 저장하고, 각 데이터를 별도의 공간에 저장해서 그 주소를 식별자들과 매칭시킨다.

깊은 복사 (Deep Copy)

참조형 데이터를 불변값으로 사용하기 위해서는, 내부 프로퍼티들을 일일이 복사하는 깊은 복사를 수행해야 한다.
재귀, JSON.stringify()를 사용하거나 자바스크립트 라이브러리를 사용하는 방법이 있다.
Spread 연산자, Object.assign()는 Depth 1까지 깊은 복사를 수행한다.

'없음'을 나타내는 값

  • undefined: 어떤 변수에 값이 존재하지 않을 경우
    값이 존재하지 않을 때 자바스크립트 엔진이 자동으로 부여할 수 있다.
    • 값을 대입하지 않은 변수, 즉 데이터 영역에 메모리 주소를 지정하지 않은 식별자에 접근 할 때
    • 객체 내부의 존재하지 않는 프로퍼티에 접근하려고 할 때
    • return 문이 없거나 호출되지 않는 함수의 실행 결과
  • null: 사용자가 명시적으로 '없음'을 표현하기 위해 대입한 값

혼란의 여지가 있으므로 '없음'을 표현하기 위해 undefined를 임의로 할당하는 것은 지양하고, null을 사용하는 것이 좋다.

profile
Software Engineer 🍊
post-custom-banner

0개의 댓글