원시 자료형(primitive data type)과 참조 자료형(reference data type)의 차이를 이해하고, 각자 맞는 상황에서 사용할 수 있다.
이전에는 number, string, boolean 등 원시 자료형의 개념에 대해 짧게 배웠었다. 이번에는 array(배열), object(객체) 즉, 참조 자료형의 개념과 원시 자료형과의 차이점에는 무엇이 있는지 배우는 시간이었다.
솔직히 조금 헷갈리는 내용이었는데, 코드 예시를 보며 퀴즈를 푸니 이해가 더 쉬워지는 것 같다! 😂
(콘솔 사용하니 더더 good 👍)
(bold 처리 -> 자주 사용)
"hello!"
"hi!"
// "hello!" 와 "hi!"는 모두 변경 x 고정된 값임
let word = "hello!"
word = "hi!"
// word라는 변수에 '재할당'을 하여 변수에 담긴 내용을 변경하는 것은 o
const num = 123;
num = 122333; // 에러 발생!
// const 키워드로 선언하면, 재할당은 불가!
// let 키워드는 재할당 가능!
원시 자료형이 할당될 때 -> 변수에 값(value)
자체가 담긴다.
참조 자료형이 할당될 때 -> 변수에 보관함의 주소(reference)
가 담긴다.
let x = 2;
let y = x; // y에 x를 할당했기 때문에 y = 2
y = 3; // y에 3을 재할당. y = 3, x = 2
// 원시자료형은 값 자체를 복사하여 할당하기 때문에 x의 값은 변하지 않는다.
let x = { foo: 3 };
let y = x; // y에 x의 주소를 할당(같은 주소) y = { foo: 3 }
y.foo = 2; // y = { foo: 2 }, x = { foo: 2 }
// 참조자료형은 같은 주소를 사용하기 때문에 y의 값을 바꾸면 x의 값도 바뀐다.
console.log([1,2,3] === [1,2,3]); // false
// 참조 자료형 ===(strict equality)는 주소값이 같은지를 확인.
// 두 참조 자료형의 주소값은 다르다!