자바스크립트에서 불변 데이터와 영속성

자바스크립트는 동적 타입 언어로, 데이터의 가변성이라는 특징을 가지고 있습니다. 이는 프로그래머가 자유롭게 데이터를 수정하고 변경할 수 있음을 의미합니다. 하지만 때로는 불변한 데이터와 영속성이 필요한 경우가 있을 수 있습니다. 이번 글에서는 자바스크립트에서 불변 데이터를 다루는 방법과 영속성을 유지하는 방법에 대해 알아보겠습니다.

불변 데이터란?

불변 데이터는 한 번 생성되면 변경할 수 없는 데이터를 말합니다. 자바스크립트에서 기본적으로 제공하는 원시 타입인 숫자, 문자열, 불리언 등은 값이 변경되지 않는 불변한 데이터입니다. 반면에 객체와 배열은 가변 데이터로, 그 내부에 저장된 값은 언제든지 변경할 수 있습니다.

불변 데이터의 특징은 다음과 같습니다.

불변 데이터의 사용 방법

불변 데이터를 사용하기 위해서는 직접 값을 변경하지 않고 복사하여 새로운 값을 생성하는 방식을 사용해야 합니다. 예를 들어, 배열의 경우 concat() 메서드를 사용하여 새로운 배열을 생성하거나, 객체의 경우 Object.assign() 메서드를 사용하여 새로운 객체를 생성할 수 있습니다.

// 배열의 불변성 유지
let arr1 = [1, 2, 3];
let arr2 = arr1.concat(4);

console.log(arr1); // [1, 2, 3]
console.log(arr2); // [1, 2, 3, 4]

// 객체의 불변성 유지
let obj1 = { name: 'John', age: 25 };
let obj2 = Object.assign({}, obj1, { age: 26 });

console.log(obj1); // { name: 'John', age: 25 }
console.log(obj2); // { name: 'John', age: 26 }

불변 데이터를 사용하면 예상치 못한 결과나 버그를 방지할 수 있으며, 상태 관리와 데이터 흐름을 더 쉽게 추적할 수 있습니다.

영속성 유지 방법

자바스크립트에서 데이터의 영속성을 유지하려면 변수에 할당된 값이 변경되지 않도록 주의해야 합니다. 예를 들어, const 키워드를 사용하여 변수를 선언하면 변수에 할당된 값을 변경할 수 없으므로 영속성이 유지됩니다.

const name = 'John';
name = 'Jane'; // Error: Assignment to constant variable.

또는 객체나 배열의 경우 Object.freeze() 메서드를 사용하여 객체나 배열을 변경할 수 없도록 만들 수 있습니다.

const person = Object.freeze({ name: 'John', age: 25 });
person.age = 26; // 무시됨

const arr = Object.freeze([1, 2, 3]);
arr.push(4); // 무시됨

이러한 방법으로 변수에 할당된 값이 변경되지 않도록 유지함으로써 데이터의 영속성을 보장할 수 있습니다.

마무리

자바스크립트에서 불변 데이터와 영속성을 유지하는 것은 예상치 못한 결과나 버그를 방지하기 위해 중요합니다. 불변 데이터는 값의 변경을 방지하고, 영속성은 변수에 할당된 값의 변경을 방지하여 데이터의 일관성을 유지합니다. 이러한 개념을 효과적으로 활용하여 안정적이고 예측 가능한 코드를 작성할 수 있습니다.

참고 자료