[javascript] Infinity와 NaN의 디버깅 방법

JavaScript에서 Infinity와 NaN은 숫자 처리에 관련된 오류를 나타내는 중요한 값들입니다. Infinity는 무한대를 나타내며, 어떤 숫자를 0으로 나누거나 Infinity에 다른 숫자를 곱하면 값이 됩니다. NaN은 “Not a Number”의 약자로, 숫자가 아닌 값을 나타냅니다. 이들의 발생은 종종 프로그램의 오류로 이어질 수 있으므로 디버깅이 중요합니다.

이 게시물에서는 JavaScript에서 Infinity와 NaN 값이 발생하는 원인과 디버깅 방법에 대해 다루겠습니다.

Infinity 값이 발생하는 경우

Infinity는 주로 0으로 나누거나 Infinity에 다른 숫자를 곱하는 등의 연산에서 발생합니다.

console.log(1 / 0);  // Infinity
console.log(Infinity * 10);  // Infinity

위와 같이 특수한 연산을 수행할 때 Infinity 값이 나올 수 있습니다.

NaN 값이 발생하는 경우

NaN 값은 주로 숫자가 아닌 값에 대해 수행된 연산에서 발생합니다.

console.log(0 / 0);  // NaN
console.log("Hello" - 10);  // NaN

위와 같이 유효한 연산이 아닌 경우에 NaN 값이 나올 수 있습니다.

디버깅 방법

1. 코드 검토

가장 먼저 코드를 검토하여 Infinity와 NaN이 발생하는 지점을 찾습니다.

// 코드 예시
function calculateTotal(items) {
  let total = 0;
  for (let item of items) {
    total += item.price;
  }
  return total;
}

위 코드에서 item.price가 정의되지 않았을 때 NaN 값이 발생할 수 있습니다.

2. 조건 확인

Infinity와 NaN이 발생하는 연산에서 사용된 조건을 확인합니다. 0으로 나누는 연산이나 숫자가 아닌 값을 사용하는 연산을 주로 확인하게 됩니다.

3. 유효성 검사

실수로 NaN이나 Infinity가 발생하는 상황에 유효성 검사를 추가합니다.

// 코드 예시
function calculateTotal(items) {
  let total = 0;
  for (let item of items) {
    if (!isNaN(item.price)) {
      total += item.price;
    }
  }
  return total;
}

4. 디버거 활용

디버거를 활용하여 실시간으로 변수의 값을 확인하고 연산의 과정을 추적하여 NaN이나 Infinity가 발생하는 원인을 찾습니다.

결론

Infinity와 NaN은 JavaScript에서 주의해야 할 중요한 숫자 값입니다. 이들의 발생을 방지하거나 식별하기 위해 코드를 지속적으로 검토하고 유효성 검사를 추가하는 것이 중요합니다.

참고 문헌: MDN web docs

이상입니다. 더 궁금한 사항이 있으면 언제든지 물어주세요!