https://poiemaweb.com/js-immutability

이 단원은 처음에 이해가 어려웠는데, 함수형 프로그래밍에 대한 배경 설명이 없었기 때문이다.

Immutability(변경불가성)

1. immutable value vs. mutable value

Javascript의 원시 타입(primitive data type)은 변경 불가능한 값(immutable value)이다.

Javascript에서 원시 타입 이외의 모든 값은 객체(Object)타입이며 객체 타입은 변경 가능한 값(mutable value)이다.

var str = 'Hello'; // C와 다르게 JS의 문자열은 immutable value이다. 
str = 'world'; // 이는 재할당은 가능하지만 메모리 영역에서의 변경이 불가능하다는 뜻이다. 
var user1 = {
  name: 'Lee',
  address: {
    city: 'Seoul'
  }
};

var user2 = user1; 
// 변수 user2는 객체 타입이다. mutable value이므로 재할당이 아닌 참조가 발생한다.
user2.name = 'Kim';

console.log(user1.name); // Kim
console.log(user2.name); // Kim

Pass-by-reference

Pass-by-reference

object를 immutable 하게 만들기 위해 const를 사용할 수 있을까?