[자바스크립트 정리]데이터 타입

Kyungoh Kang·2021년 1월 24일
0

javascript 정리

목록 보기
1/7

Data type

  1. 원시 데이터
    • string
    • number
    • boolean
    • symbol
    • BigInt
      ==> 선언하고 바로 가져다 쓸 수 있는 데이터들인듯
  2. 참조형 데이터
    • Array
    • Object
    • Date
      ==> 데이터 안에 데이터를 가지고 있는 데이터들인듯

자바스크립트에서 데이터를 저장하는 원리

  1. 원시 데이터
var a = 1;

console.log(a);
  • 위와 같이 정의했을 때 자바스크립트는 식별자 혹은 변수명(a)를 식별자 테이블에 저장하고 a의 값인 1을 데이터 테이블에 저장한다.(서로 다른 테이블에 저장되고 저장된 공간?은 고유 주소값을 가지고 있어 변수명 테이블에 변수명과 함께 저장된다.)

  • a를 호출하면 a라는 변수명을 찾고 함께 저장된 주소값으로 데이터를 찾아 불러온다.

  1. 참조형 데이터
var a = {
 	b: 1,
  	c: 2
};

console.log(a.b)
  • 참조형 데이터를 저장할 때는 a를 변수 테이블에 a안의 키이름들을 또 다른 변수 데이터에, 각 키값의 데이터를 데이터 테이블에 저장한다.

  • 객체 a의 테이블에는 a가 가지고 있는 키들의 주소값이 함께 저장되며 이것을 이용해 키의 테이블로 갔다가 키와 함께 저장된 주소값으로 데이터를 불러온다.

  1. 선언된 변수에 새로운 데이터를 할당할 때는 데이터 테이블에 새로운 공간을 확보한 후 새로 할당된 데이터를 저장하고 기존 데이터는 삭제된다(기존 데이터를 참조하는 다른 변수가 없을 경우)

  2. 변수와 데이터를 따로 저장하는 이유는 비트라는 한정된 공간안에 효율적으로 데이터를 관리하기 위함이다.

참조형 데이터의 불변성

  1. 참조형 데이터가 가변성을 지니는 경우
let a = { b:1, c:2}

let d = a;

d.b = 3;

console.log(a.b); ///3이 출력됌
  • d.b의 값을 변경했는데도 a.b의 값도 함께 변경된다. 이것은 데이터가 저장되는 원리와 연관이 있는데 두번째 줄에서 d와 a가 같다고 선언을 하면 d는 a가 가지고 있는 주소값을 가지게 된다. 그러므로 d는 a와 같은 키의 주소값들을 가지고 있게 되고 같은 키를 참조해 데이터를 가져오기 때문에 하나의 주소값에서 같은 데이터를 가져오게 된다. 그래서 d를 이용해 값들을 재할당하게 되더라도 a의 값들이 함께 변하게 된다.
  1. 참조형 데이터가 불변성을 지니게 하는 경우
let a = {b:1, c:2};

let d = {b:1, c:2};

d.b =3;

console.log(d.b, a.b); //3, 1이 출력됌
  • 위와 같이 내부 프로퍼티를 직접 할당해주면 d가 가진 키와 값들이 a와는 다른 공간에 저장이 되기 때문에 불변성을 지니게 된다. 즉, 객체의 불변성을 지키려면 내부 프로퍼티를 직접 조정해야한다.

  • 이것을 이용해 함수를 만들면 객체의 불변성을 지키면서 값들을 할당, 재할당 할 수 있다.

0개의 댓글