TIL 3주차 - 2. 자료형

lim1313·2021년 8월 4일
0

부트캠프 TIL

목록 보기
9/49

원시 타입 vs 참조 타입

원시 타입

숫자(Number)
불린(Boolean)
null
undefined
문자열(String)

let x = 100;
let y = x;
x = 99;
y;   // 100;
// 데이터 값이 복사되기 때문에 기존의 데이터에 영향을 주지 않음.

원시 타입 데이터는 변수에 할당될 때 메모리 상에 고정된 크기로 저장되고 해당 변수가 원시 데이터의 값을 보관한다.
원시 타입 자료형은 모두 변수 선언, 초기화, 할당시 값이 저장된 메모리 영역에 직접적으로 접근한다.
즉 변수에 새 값이 할당 될 때 변수에 할당된 메모리 블럭에 저장된 값을 바로 변경한다는 뜻이다.

참조 타입

객체
배열
함수

let x = {"num": 100};    // 참조 타입 선언
let y = x;
x.num = 99;
y.num; //-> 99,    
// 참조(주소)를 복사하는 것이기 때문에 ,
// 동일한 객체를 가리킴

참조 타입 데이터는 크기가 정해져 있지 않고 변수에 할당될 때 값이 직접 해당 변수에 저장될 수 없다. 변수에는 데이터에 대한 참조만 저장된다.
변수의 값이 저장된 힙(Heap) 메모리의 주소값을 저장한다.
참조 타입은 변수의 값이 저장된 메모리 블럭의 주소를 가지고 있고, 자바스크립트 엔진이 변수가 가지고 있는 메모리 주소를 이용해서 변수의 값에 접근한다.

원시 자료형과 참조 자료형

  • 원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담기고, 참조 자료형이 할당될 때는 보관함의 주소(reference)가 담긴다.
  • 그래서 참조 자료형은 기존에 고정된 크기의 보관함이 아니라, 동적으로 크기가 변하는 특별한 보관함을 사용할 수 있다.

퀴즈

let myArray = [2, 3, 4, 5];
let ourArray = myArray;
ourArray[2] = 25;
  console.log(myArray === ourArray) // -> true
ourArray = undefined;
  console.log(myArray === ourArray) //-> false

myArray의 값은?

myArray의 값 : [2,3,4,5]

마지막 ourArray에 원시 자료형 undefined가 할당되었기 때문에, 더이상 myArray와 같은 참조를 가지고 있지 않다.
즉, ourArray는 undefined라는 원시 자료형을 할당받고 있다.

let score = 80;
function doStuff(value) {
  value = 90;
}
doStuff(score)

socre의 값은?

let score = 80;
function doStuff(value) {
console.log(value); //-> 80
// 1) 함수 내부에서 let value = 80이 할당된 것과 같다.

value = 90;
//-> 2) value에 90 이 재할당된다!

}
doStuff(score) // -> 80
profile
start coding

0개의 댓글