- 고정된 저장공간을 차지하는 데이터이다.
- 데이터 보관함의 한 공간에 값이 직접적으로 들어간다.
- number, string, boolean, null, undefined 등이 있다.
- 유동적인 저장공간을 차지하는 데이터이다.
- '별도의 공간(heap)'에 값이 들어간다. 그 값의 주소가 데이터 보관함의 한 공간에 들어간다.
- 어떤값을 가리키는 값이라 해서 포인터라 부르기도 한다.
- 배열(Array), 객체(Object) 등이 있다.
자바스크립트는 변수가 다른 곳으로 들어가거나 이동을 할때 항상 값을 복사한다.
복사되는 값이 직접적인 값일 경우거나 주소값일 경우로 나눌 수있다.
let a = 1; let b = a; a+= 10; console.log(a); // 11 console.log(b); // 1
기존 데이터가 변하지 않았다.
let a = 1; function test(v) { v++ } test(a); console.log(a); // 1
함수에서도 마찬가지로 변하지 않았다.
let a = { x: 1 }; let b = a; a.x += 10; console.log(a.x); // 11 console.log(b.x); // 11
기존 데이터가 변하였다.
let a = { x: 1 }; function test(v) { v.x++ } test(a); console.log(a.x); // 2
함수에서도 기존 데이터가 변하였다.