TIP
8
push( ) 메서드 대신 펼침 연산자로 원본 변경을 피하라
이번 팁에서는 펼침 연산자로 새로운 배열을 생성해 배열에 대한 조작을 피하는 방법을 살펴봅니다.
앞서 살펴본 바와 같이 조작은 예상치 못한 결과를 낳을 수 있습니다. 코드의 앞부분에서 컬렉션의 무언가를 수정하면 훨씬 더 찾기 어려운 버그를 만들 수 있지요. 조작이 항상 골치 아픈 일을 만들어내는 것은 아니지만 잠재적으로 문제가 되는 것은 사실이므로, 가능하면 조작을 피하는 것이 좋습니다. 실제로 리덕스(Redux)를 비롯한 인기 있는 자바스크립트 라이브러리는 조작을 이용하는 함수를 허용하지 않습니다.
또한, 모던 자바스크립트의 상당수가 함수형 프로그래밍 형식을 취하기 때문에 부수 효과와 조작이 없는 코드를 작성해야 합니다. 함수형 자바스크립트에 대한 이야기는 이 책에서 모두 다룰 수 없을 정도로 많습니다. 함수형 자바스크립트에 관심이 있다면, 마이클 포거스(Michael Fogus)가 쓴 『함수형 자바스크립트(Functional JavaScript)』(한빛미디어, 2014)를 살펴보길 바랍니다.
조작이 왜 나쁜지 충분히 이해했나요? 그렇지만 조작이 실제로 무슨 의미가 있는지 궁금할 것입니다. 배열을 조작하기 위해 흔히 사용하는 push()
메서드를 생각해봅시다. push()
메서드는 새로운 항목을 배열 뒤에 추가해 원본 배열을 변경합니다. 즉, 항목을 추가하면 원본 배열을 조작하는 셈이지요. 다행히 펼침 연산자를 이용하면 원본 배열이 조작되는 부수 효과를 방지할 수 있습니다.