메서드를 설명하기에 앞서, 자주 사용하는 배열 조작 메서드에 대해 짚고 넘어갈 점이 있습니다.
애석하게도 배열 메서드 중 일부는 배열 ‘자체를 수정하며, 다른 일부는 새 배열을 반환합니다.
예를 들어 push는 배열 자체를 수정하며, concat은 새 배열을 반환합니다.
메서드 이름에 이런 차이점에 대한 힌트가 전혀 없으므로 프로그래머가 전부 기억해야 합니다.
NOTE_
루비 같은 언어는 이름만 봐도 대상 자체를 수정하는지, 아니면 새로운 것을 반환하는지 알 수 있도록 만들어져 있습니다.
예를 들어 루비에서 문자열 str에서 str.downcase를 호출하면 소문자 버전이 반환되지만 str 자체는 바뀌지 않습니다.
반면 str.downcase! 를 호출하면 소문자 버전이 반환되지만 str 자체가 바뀝니다.
필자는 자바스크립트 표준 라이브러리에서 어떤 메서드가 데이터 자체를 수정하고 어떤 메서드가 사본을 반환하는지에 관한 아무런 단서도 제공하지 않는다는 점은 불필요한 기억을 강요하는 단점이라고 생각합니다.