let a = 10;
let b = a;
b = 20;
숫자, 문자열, boolean, null, undefined 같은 기본형 데이터 타입들이 복사됨
=> 어떤 상황에도 이전 변수에 담겨있는 값에 영향을 안 줌
객체는 복사되지 않고 참조만 됨
let o = {
loading: false
};
let o2 = o;
o2.loading = true;
객체는 실제 이 객체가 저장되어 있는 위치 값이 저장되어 o2의 loading을 바꾸게 되면 o의 loading도 바뀜(같은 객체, 즉 원본을 가리킴)
function foo(a) {
o.loading = true;
}
foo(o);
if (o.loading === true) {
console.log('true');
} else {
console.log('false');
}
객체는 절대 복사되지 않고 늘 참조된다는 것을 인지하여야 복잡한 패턴의 코드에서도 문제가 발생하지 않음
좀 더 안전한 코드를 작성할 수 있음