mutable
1. 변할 수 있다.
2. 참조 타입
3. 해당 데이터 주소를 찾아 값을 변경한다.
immutable
1. 불변, 변할 수 없다.
2. 원시 타입
3. 해당 데이터 주소와 별개의 새로운 주소에 값이 할당한다.
4. 문자열
[핵심]
mutable은 원본 데이터를 변화시키려는 속성이고 immutable은 원본 데이터를 유지하려는 속성이다.
Array Method - immutable of mutable
메서드 별로 달라서 자주 사용하는 것 알아두면 좋다.
- concat() : immutable
//concat() - immutable
const arr1 = [1, 2, 3];
const arr2 = [4, 5];
const concatArr = arr1.concat(arr2);
concatArr; //[1, 2, 3, 4, 5]
arr1; //[1, 2, 3]
arr2; //[4, 5]
concat()메서드는 배열을 합쳐준다. immutable이어서 원본을 유지한다.
- pop() : mutable
//pop() - mutable
const arr = [1, 2, 3, 4];
arr.pop(); //4
arr; //[1, 2, 3]
배열의 마지막 요소를 삭제시켜주는 메서드다. mutable이라 원본을 수정한다.
[자주 쓰이는 immutable / mutable 메서드]
mutable (원본 수정) | immutable (원본 유지) |
Array.pop() Array.push() Array.unshift() Array.shift() Array.splice() Array.fill() Array.reverse() Array.sort() |
Array.concat() Array.filter() Array.find() Array.forEach() Array.includes() Array.map() Array.join() |
문자열 메서드는 전부 immutable(원본 유지)이다.
- String.slice()
- String.replace()
- String.split()
...
Immutable Data Type을 사용해야 하는 이유
1. 보안
내가 저장한 데이터를 다른 사람이 이상한 코드를 넣는 등 데이터 값 변경을 방지한다.
2. 스레드 안전
프로그램 실행 시 할당되는 프로세스 안에서 다양한 스레드가 동시에 돌아가며 빠르게 동작하도록 도와준다.
다양한 스레드들이 동시에 변수에 접근해 값을 변경할 수 있는데 동시에 값을 변경한다는 것은 위험하다.
가능하면 값이 변경될 수 있는 것은 사용하지 않는 것이 좋다.
3. 실수 줄이기
변경되어야 할 이유가 없으면 const를 이용하는 것이 좋다.
코드를 추후 변경하거나 다른 개발자가 변경 할 때도 실수를 방지할 수 있다.
[출처]
https://joy-codeing-lee.tistory.com/52
'개발 > Javascript' 카테고리의 다른 글
[JS] 스택 / 큐 (0) | 2022.10.02 |
---|---|
[JS] 자바스크립트의 중첩 함수 (0) | 2022.10.01 |
[JS] 배열 reduce 함수 (0) | 2022.09.27 |
[JS] 문자열 비교하기 (1) | 2022.09.24 |
[JS] 전개 구문 (Spread syntax) (1) | 2022.09.23 |