상품의 상세정보를 본 내역들을 localStorage에 저장하기 위해 아래와 같은 코드를 만들었습니다.
useEffect(() => {
testLocalStorage();
return () => {
recentItemCheck();
};
}, []);
function recentItemCheck() {
let arr = localStorage.getItem('recentItem');
arr = JSON.parse(arr);
if (arr === null) {
arr = [];
arr.push(Number(id));
} else if (arr.indexOf(Number(id)) === -1) {
arr.push(Number(id));
} else {
arr.splice(arr.indexOf(Number(id)), 1);
arr.push(Number(id));
}
if (arr.length > 3) {
arr.shift();
}
localStorage.setItem('recentItem', JSON.stringify(arr));
}
아래의 테스트 코드로 확인해본 결과 localStorage.getItem()을 통해 받아온 값은 값에의한 전달로 확인이 되었습니다.
function testLocalStorage() {
let testArr = [1, 2, 3, 4, 5];
localStorage.setItem('testArr', JSON.stringify(testArr));
let temp = localStorage.getItem('testArr');
let test = JSON.parse(temp);
test[0] = 999;
console.log(testArr);
console.log(test);
}
여기서 질문을 드리면, recentItemCheck() 내부에 로컬저장소에서 받아온 arr 변수를 굳이 다른 변수로 복사하지 않고 arr을 수정해서 다시 로컬저장소로 보내도 된다고 생각했습니다. 이렇게 해도 되는 것인지 질문드립니다.