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

dongha1992·2021년 1월 19일
0
post-thumbnail

데이터 타입

기본형

  • 숫자, 문자열, boolean, null, undefined, ES6 이후 심볼 추가
  • 할당이나 연산시 복제된다.
  • 기본형은 값이 담긴 주솟값을 바로 복제
  • 기본형은 모두 불변값

참조형

  • 객체, 배열, 날짜, 정규표현식, ES6 이후 map, set
  • 할당이나 연산시 참조된다.
  • 참조형은 값이 담긴 주솟값들도 이루어진 묶음을 가리키는 주솟값을 복제

변수

  • 변경 가능한 데이터가 담길 수 있는 공간

식별자

  • 그 변수의 이름을 말한다

메모리 주솟값

  • 0, 1만 표현할 수 있는 하나의 메모리 조각을 비트라고 함
  • 각 비트는 고유한 식별자를 통해 위치를 확인할 수 있다.
  • 효율적인 검색을 위해 비트를 묶어 바이트로 만듦
  • 모든 데이터는 바이트 단위 식별자, 메모리 주솟값을 통해 서로 구분하고 연결할 수 있다.
  • 식별자는 어떤 데이터를 식별하는 데 사용하는 이름, 즉 변수명이다.

선언과 할당

let a; // 변수 a를 선언 or 이 데이터의 식별자는 a로 한다
a = "abc" // 변수 a에 데이터 할당

let a = "abc" // 변수 선언과 할당을 한 문장으로 표현
  • 변수를 선언하면 컴퓨터는 메모리의 빈 공간에 식별자를 저장하고, 그 공간의 값은 undefined를 할당한다.
  • 그 변수에 기본형 데이터를 할당하려고 하면 별도의 공간에 데이터를 저장, 그 공간의 주소를 변수의 값 영역에 할당.
  • 참조형 데이터를 할당하고자 할 경우 참조형 데이터 내부 프로퍼티들을 위한 변수 영역을 별도로 확보해서 확보된 주소를 변수에 연결, 다시 확보한 변수 영역에 각 프로퍼티의 식별자를 저장하고, 각 데이터를 별도의 공간에 저장해 그 주소를 식별자들과 매칭

불변 객체

  • 참조형 데이터의 '가변'은 데이터 자체가 아니라 내부 프로퍼티를 변경할 때만 성립된다.

얕은 복사와 깊은 복사

  • 얕은 복사는 바로 아래 단계만 복사, 깊은 복사는 내부의 모든 값들을 하나하나 다 복사
  • 중첩된 객체에서 참조형 데이터가 저장된 프로퍼티를 복사할 때 그 주솟값만 복사한다는 의미
  • 그러므로 해당 프로퍼티에 대해 원본과 사본이 모두 동일한 참조형 데이터의 주소를 가리키게 된다.
  • 깊은 복사는 참조형 데이터의 경우 다시 그 내부의 프로퍼티들을 복사해야 한다.

undefined와 null

  • 사용자가가 어떤 값을 지정할 것이라고 예상되는 상황임에도 실제 값이 없을 때 undefined 반환
  • null은 사용자가 명시적으로 "없음"을 나타내기 위해 대입한 것

참고 : 코어자바스크립트

profile
글과 코드와 사람에 관해 생각합니다.

0개의 댓글