포스트

배열에 같은 함수를 사용했는데 왜 결과가 다를까

함수와 배열의 상호작용

먼저, 이 문제의 핵심은 함수와 배열이 어떻게 상호작용하는지에 대한 이해입니다. ‘상호작용’이란 두 개 이상의 것들이 서로 영향을 미치는 것을 말합니다. 이 상황에서는 함수가 배열에 어떤 영향을 미치는지 중요한 포인트입니다.

Mutable과 Immutable의 차이

데이터 유형에는 크게 두 가지가 있습니다: Mutable과 Immutable. ‘Mutable’은 변경 가능하다는 뜻이고, ‘Immutable’은 변경 불가능하다는 뜻입니다. 배열은 Mutable 데이터 유형에 속하므로 내부의 요소를 변경할 수 있습니다.

함수 동작의 분석: Array.sort()

이 문제에서 사용된 Array.sort() 메소드는 원래 배열을 직접 변경합니다. 다시 말해서, 새로운 배열을 반환하는 것이 아니라 원래 배열 자체를 정렬합니다. 이러한 동작은 배열을 여러 번 정렬하려고 할 때 예상치 못한 결과를 가져올 수 있습니다.

Shallow Copy와 Deep Copy

함수를 사용할 때 배열을 복사하려고 하면 ‘Shallow Copy’와 ‘Deep Copy’ 중 하나를 사용해야 합니다. ‘Shallow Copy’는 배열의 첫 번째 레벨만 복사하고, ‘Deep Copy’는 배열의 모든 레벨을 복사합니다. 이러한 방법을 통해 원래 배열에 영향을 주지 않고 작업을 할 수 있습니다.

실제 문제: Uncaught TypeError

위의 Stack Overflow 질문에서 나타난 실제 에러는 Uncaught TypeError: Cannot read properties of undefined (reading '0')입니다. 이 에러는 정렬 함수 내에서 배열의 정의되지 않은 요소에 접근하려고 했을 때 발생합니다. 이는 배열이 예상과 다르게 동작했기 때문에 발생한 문제입니다.

결론

배열과 함수의 상호작용을 이해하려면 Mutable과 Immutable, Shallow Copy와 Deep Copy 등의 개념을 알아야 합니다. 이러한 지식을 바탕으로 함수와 배열이 어떻게 상호작용하는지 이해하고, 에러를 효과적으로 해결할 수 있습니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.