함수는 객체타입 변수의 불변성을 보장하지 않는다.
function showName(obj) {
obj.name = "박은비";
console.log(obj);
}
// 객체타입은 불변성을 보장 못한다
const member = { name: "박금비" };
console.log(member);
showName(member);
console.log(member);
showName에서 접근하는 주소값과 전역에서 접근하는 주소값이 같기 때문에 데이터의 불변성이 없다.
이것을 막기 위한 복제 기능은 두가지가 있다.
1. Object.assign(복제하는법)
const member = { name: "박금비" };
// Object.assign
function changeName2(obj) {
let newObj = Object.assign({}, obj);
newObj.name = "박은비";
return newObj;
}
let obj2 = changeName2(member);
console.log(member); //박금비
console.log(obj2); //박은비
2. 스프레드 연산자를 사용하는 방법
const member = { name: "박금비", age: 18 };
function changeName(obj) {
return { ...obj, name: "박은비" };
}
const newObj = changeName(member);
console.log("newObj = ", newObj); //박은비
console.log("member =", member); //박금비
'Javascript' 카테고리의 다른 글
if, 반복문, function에서 break, continue, return (0) | 2022.09.02 |
---|---|
고차함수_forEach, find, findIndex,some,every,filter (0) | 2022.08.13 |
배열의 함수들_push,unshift,pop,shift,splice,reverse (0) | 2022.08.01 |
정규표현식에 대한 개념 (0) | 2022.07.22 |
스프레드연산자 (...) spread 연산 (0) | 2022.07.21 |