JavaScript Review 👀 - 7화

JavaScript Review 👀 - 7화

원시타입과 객체타입을 전달 할 때 불변성을 떠올리자

·

1 min read

불변성(Immutability)

변경 할 수 없다는 뜻 입니다.

최초 생성 되었을 때의 값이 변하지 않고 유지된다는 의미 입니다.
객체의 불변성을 지키면 원본 데이터가 변경, 훼손되는 것을 막을 수 있습니다.

object의 상태가 변경되지 않도록 불변성을 유지하면서 코딩하는 것이 중요 합니다.

코드를 보면서 알아보겠습니다.

원시타입 예시

function add(num) {
    num = 3;
    console.log(num); // 3
}

const value = 1;
add(value);

console.log(value); // 1

원시타입의 값은 전달되거나 할당 될 때 값에 의한 복사 가 이뤄집니다.

  • 즉 위의 함수를 호출하면 원시 값 1이 그대로 복사되어 num으로 전달되고

  • 지역변수인 num 의 값을 3으로 변경했으니 함수 스코프 안에서는 3으로 출력이 됩니다.

  • 기존 전역에 있는 value 에는 1이 기존대로 있으니까 1이 출력이 됩니다.

객체타입 예시

객체 타입은 참조에 의한 복사 가 이뤄집니다.

즉 값이 아니라 메모리 주소 전달하여 결국 동일한 객체를 가지고 있게 됩니다.

  • 동일하다는 말을 잘 상기시키면 됩니다.
function self(obj) {
    // 0x111 전달
    obj.name = "whowho"; // ❌ 외부로부터 전달된 인자를 내부에서 변경하지 말 것(원시타입 역시)
    console.log(obj); // { name : 'whowho'}
}

const my = { name: "hyunho" }; // 0x111 주소

self(my);
console.log(my); // { name : 'whowho'}