inblog logo
|
LifeLog, DevLog
    JS

    얕은 복사, 깊은 복사

    KYJTHEYJ's avatar
    KYJTHEYJ
    Nov 15, 2025
    얕은 복사, 깊은 복사
    // 얕은 복사와 깊은 복사
    // 데이터 타입과 연관이 깊다
    // 데이터 타입엔 원시타입, 참조타입이 있다
    // 원시타입 (숫자, 문자, boolean, null, undefined, Bigint, Symbol)
    // 참조타입 (배열, 객체, Set, Map, Function)
    // 둘의 구별은 메모리에 데이터가 저장되는 위치에 따라 구별
    
    // 메모리 안에 데이터는 1차로는 스택, 2차로는 힙 영역을 지남
    
    // 원시타입은 1차 관문인 스택 영역에 데이터 자체가 저장
    // 참조타입은 1차 관문인 스택 영역에 주소가 저장이 되고
    // 2차 영역인 힙 영역에 데이터 자체가 저장이 됨
    
    // 이 데이터 타입에 따른 메모리 저장위치가 얕은 복사, 깊은 복사와 연관성이 있음
    
    // 깊은 복사 -> 기존 값에 영향이 없음
    const a = 'a';
    let b = 'b';
    b = 'c';
    
    // a 는 상관이 없음 a -> a, b -> c
    
    // 얕은 복사 -> 기존 값에 영향이 있음 -> 참조 데이터의 복사에 사용
    const a2 = {one: 1, two: 2};
    let b2 = a2;
    b2.one = 3;
    console.log(a2); // one -> 3의 값을 지님
    
    // 원시타입은 스택 영역에 데이터가 저장이 되니 스택 영역에서 데이터를 복사
    // 참조타입도 스택 영역에서 데이터가 복사가 이루어 지는데
    // 참조타입은 스택 영역에 값 데이터가 담긴 힙 영역의 주소를 지니고 있음
    // 즉, 실제 데이터가 담긴 힙 영역의 주소를 복사하는 것
    Share article

    LifeLog, DevLog - https://github.com/KYJTHEYJ

    RSS·Powered by Inblog