불변성을 유지하면서 코딩하는 것이 좋다!
함수 내부에서 외부로부터 주어진 값을 변경하는 것은 좋지 않다
다음과 같은 안 좋은 상황 예시를 들 수 있다.
const obj = {
name: 'dongree',
age: 24,
}
function changeValue(obj){
obj.name = 'haha';
return obj;
}
console.log(obj.name); // dongree
changeValue(obj);
console.log(obj.name); // haha
다음과 같이 object는 값이 할당될때 참조에 의한 복사가 되므로 함수 내부에서 object 안에 있는 값을 변경할 경우 함수 밖에있는 object값에도 변경된 값이 적용된다.
그래서 이와 같은 상황을 피하기 위해 불변성을 유지하는 것이 중요하다!
다음과 코드를 봐보자
const obj = {
name: 'dongree',
age: 24,
}
function changeValue(obj){
return {...obj, name:'haha'};
}
console.log(obj.name); // dongree
changeValue(obj);
console.log(obj.name); // dongree
다음 코드에서 볼 수 있듯이 spread 연산자 (...) 를 활용하여 불변성을 유지할 수 있다