김민태 [참조사전 - 참조와 복사]

이동주·2021년 10월 23일
0

1. 값의 복사

let a = 10;
let b = a;

b = 20;
  • 복사 메커니즘
    10이 a에 들어간 후, a에 있는 값을 b로 옮길 때 이 10이라는 값이 복사됨
    최조의 a와 관계가 없기 때문에 b를 바꿨을 때 a는 변화가 없다.

2. 복사되는 값의 유형

숫자, 문자열, boolean, null, undefined 같은 기본형 데이터 타입들이 복사됨
=> 어떤 상황에도 이전 변수에 담겨있는 값에 영향을 안 줌

3. 참조되는 객체

객체는 복사되지 않고 참조만 됨

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');
}

4. 인자 전달 패턴

객체는 절대 복사되지 않고 늘 참조된다는 것을 인지하여야 복잡한 패턴의 코드에서도 문제가 발생하지 않음
좀 더 안전한 코드를 작성할 수 있음

profile
안녕하세요 이동주입니다

0개의 댓글

관련 채용 정보