자바스크립트에서 참조 타입은 객체(object), 배열(array), 함수(function) 이고
원시 타입은 숫자(number), 문자(string), 논리형(boolean), null, undefined 이다.
원시 타입은 변수에 해당하는 값이 그대로 저장된다.
let a = 'a'
let b = a
console.log (b) // 'a'
console.log (a) // 'a'
console.log (a === b) // true
let a = 'a'
let b = a
b = 'b'
console.log (b) // 'b'
console.log (a) // 'a'
console.log (a === b) // false
원시 타입은 값 자체를 그대로 저장하기 때문에 b
를 a
라고 선언하고 b
의 값을 변경하면 a
는 변경되지 않고 b
의 값만 변경된다.
참조 타입은 객체 값 자체를 저장하지 않고 해당 객체가 가지고 있는 참조 값을 저장한다.
let a = {a:'a'}
let b = a
console.log (b.a) // 'a'
console.log (a.a) // 'a'
console.log (a.a === b.a) //true
let a = {a:'a'}
let b = a
b.a = 'b'
console.log (b.a) // 'b'
console.log (a.a) // 'b'
console.log (a.a === b.a) //true
값 자체를 저장하는 것이 아니라 참조(객체를 가르키는 참조값 혹은 메모리 주소) 값을 저장하고 있기 때문에 b
를 a
라고 선언한 후 b.a
값을 변경하면 a.a
의 값도 함께 변경되는 것을 확인할 수 있다.