배열에 원소를 추가할 때 unshift를 쓰곤 한다.
arr = [2, 3, 4]
arr.unshift(1)
arr.unshift(0)
console.log(arr) // [0, 1, 2, 3, 4]
그러나 unshift는 다음과 같이 배열의 값을 직접 참조하여 원본 배열에 변형을 일으키는데,
불변성의 이슈에서나 성능 상의 이유에서나 좋지 못하다.
arr = [2, 3, 4]
// 0: 2, 1: 3, 2: 4
arr.unshift(1)
// 0: 1, 1: 2, 2: 3, 3: 4
arr.unshift(0)
// 0: 0, 1: 1, 2: 2, 3: 3, 4: 4
그러나 전개연산자를 이용하면 불변성, 성능 이슈를 모두 잡을 수 있다.
arr = [2, 3, 4]
new_arr = [0, 1, ...arr]
console.log(new_arr) // [0, 1, 2, 3, 4]
전개연산자는 얕은 복사를 이용하기 때문에
다음과 같이 arr의 메모리를 참조하여 원본배열의 변형없이,
그리고 unshift과 같이 불필요한 연산없이 한 번의 선언으로 원하는 배열을 생성할 수 있다
'자바스크립트 문법 > 문법 정리 뼈대' 카테고리의 다른 글
wsl 에서 zsh 삭제. 접속 불가. ㅠ 해결 (0) | 2022.12.29 |
---|---|
삽질의 연속. 학습기 (리액트+노드+서버) (1) | 2022.12.22 |
vscode 프린트 : 라인넘버, 행번호 출력 (0) | 2022.12.20 |
JSON.stringify(), JSON.parse() (0) | 2022.12.17 |
js - react - node.js - react 끙끙 (0) | 2022.12.16 |
리액트 렌더링은 언제 언제? (0) | 2022.12.16 |
1107- 노마드/ 리액트 시작. 이틀째 잠시 보류 (0) | 2022.11.07 |
DeepDive 학습 중 (0) | 2022.11.04 |
댓글