Documentation
array.splice(start, deleteCount, item1, item2, ...)
start : 배열에서 변경을 시작할 인덱스. 양수를 사용하면 배열의 앞에서부터, 음수를 사용하면 배열의 끝에서부터 인덱스를 센다.
deleteCount : 배열에서 제거할 요소의 수
item1, item2, ... : 배열에 추가할 요소들
let stacks = [ 2, 1, 1, 2, 3, 1 ];
let removedElements = stacks.splice(-4, 4);
start: -4, deleteCount: 4 이므로 배열의 끝에서 4번째 요소부터 4개를 제거한다는 뜻이다. 따라서 결과는 다음과 같다:
removedElements: [1, 2, 3, 1]
stacks (변경 후): [2, 1]
splice를 다른 변수에 할당을 해주면, 변경 후의 stacks가 그 변수에 담긴다고 생각했다. 그런데 그게 아니라, 따로 다른 변수에 할당을 해주지 않아도 stacks는 변경된 채로 남아있고, 할당을 해주게 되면 removedElements 가 할당되는 것이었다.