문제상황:
Node.js를 사용하여 데이터를 처리하던 중, 다음과 같은 에러가 발생했습니다. 아래 코드는 배열의 요소를 제곱하는 함수를 사용하여 새로운 배열을 만드는 과정입니다.
에러가 발생한 코드:
const numbers = [1, 2, 3, 4, 5];
function square(array) {
return array.map(number => number * number);
}
const squaredNumbers = square(numbers);
console.log(squaredNumbers);
에러로그 내용:
TypeError: Cannot read property 'map' of undefined
해결방법:
에러가 수정된 코드 및 수정된 부분에 대한 주석:
const numbers = [1, 2, 3, 4, 5];
function square(array) {
// 에러 수정: array 매개변수에 기본값을 추가
array = array || [];
return array.map(number => number * number);
}
const squaredNumbers = square(numbers);
console.log(squaredNumbers);
원인분석:
이 에러의 원인은 square 함수에 전달된 array 매개변수가 undefined인 경우입니다. 이 경우에 array.map() 함수를 호출하려고 하면, TypeError: Cannot read property 'map' of undefined 에러가 발생합니다.
수정된 코드에서는 다음과 같은 원리로 작동합니다.
- square 함수를 호출할 때, array 매개변수에 배열이 전달됩니다. 이 경우에는 numbers 배열이 전달됩니다.
- 만약 array 매개변수가 undefined인 경우, 기본값으로 빈 배열([])이 할당됩니다. 이렇게 하면 array.map() 함수를 호출할 수 있습니다.
- array.map() 함수를 사용하여 배열의 요소를 제곱하고, 그 결과를 새로운 배열에 저장합니다.
참고링크:
728x90