Skip to content

Latest commit

 

History

History
64 lines (48 loc) · 3.97 KB

NaN===NaN.md

File metadata and controls

64 lines (48 loc) · 3.97 KB

Why “NaN === NaN” is False?

  • NaN은 특별한 값을 가지고 있어서, NaN과 NaN은 동등 비교(===)를 하면 항상 false를 반환.

  • 이는 NaN이 "숫자가 아님"을 나타내는 특수한 값이지만, 실제로는 값이 정의되어 있지 않은 상태이기 때문!!!!

  • 다른 어떤 값과도 (자기 자신 포함) 같지 않기 때문임.

  • 이 동작은 부동 소수점 산술을 위한 IEEE 754 표준의 결과입니다. 이 표준은 NaN을 정의하며, 이는 정의되지 않거나 나타낼 수 없는 수학적 작업의 결과를 나타내는 특수한 값

  • NaN은 "숫자가 아님"을 의미하지만, 실제로는 JavaScript에서 특정 값으로 반환될 수 있는 특정 값이다. 예를 들어 0을 0으로 나누거나 잘못된 숫자를 구문 분석하려고 시도하는 경우 NaN이 반환될 수 있음.

  • NaN은 특정한 숫자 값이 아니기 때문에, === 연산자를 사용하여 자기 자신을 비롯한 어떤 값과도 비교할 수 없음

  • 값이 NaN인지 여부를 테스트하려면 JavaScript의 내장 함수인 isNaN() 함수를 사용할 수 있다.

  • 이 함수는 값이 NaN 인 경우 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

NaN 여부 확인을 위해 isNaN() 을 써야하는 상황?

  1. 사용자 입력 값의 유효성 검사
    1. 사용자로부터 입력받은 값이 숫자인지 아닌지를 확인하여 유효성을 검사함
  2. 계산 결과의 유효성 검사
    1. 계산 결과가 숫자인지 아닌지를 확인하여 유효성을 검사하는 데 사용됨
  3. 데이터 처리
    1. 데이터를 처리하는 도중에 유효하지 않은 값을 처리하는 데 사용
      1. 문자열을 숫자로 변환할 때 생기는 오류 처리
        1. parseInt(), praseFloat() 함수를 이용해서 문자열을 순자로 변환할 수 있지만 변환 결과가 NaN일 경우

          let num = parseInt("Hello World");
          if(isNaN(num) {
          	console.log("문자열을 숫자로 반환할 수 없습니다.");
          }
      2. 수학적 계산에서 NaN 값이 생성될 수 있는 경우
        1. 0으로 나누거나, Infinity를 0으로 나누는 수학적 계산을 수행하는 경우.

          let result = 10 / 0;
          if (isNaN(result)) {
            console.log("0으로 나누어 계산할 수 없습니다.");
          }

===Number나 ===float, ===int 대신 isNaN()을 쓰는 이유?

===Number===float, ===int 와 같은 비교 연산자는 특정 타입의 값을 확인하기 위해 사용 됨.

하지만 isNaN() 함수는 값이 NaN 인지 여부를 확인하기 위해 사용

또한, JavaScript에서는 몇 가지 유형의 값들이 서로 상호작용할 때, 예기치 않은 결과를 일으킬 수 있음

예를 들어, NaN === NaN 비교 연산의 결과는 false

숫자가 아닌 값들에 대해서도 예상되는 결과를 얻기 위해서 isNaN() 함수를 쓴다!

isNaN() 함수는 숫자인지 여부를 확인하기 위해 사용되며, 다양한 유형의 값들에 대해서도 정확한 결과를 얻을 수 있다. 그러므로, 값이 NaN 인지 여부를 확인하기 위해서는 isNaN() 함수를 사용해야한다.

숫자가 아니면 다 NaN인 거 아니야?

  • 부동 소수점 방식에서는 "NaN(Not a Number)"이라는 값이 존재함. NaN은 숫자가 아님을 나타내는 값으로, 예를 들어 0으로 나누거나 0을 곱하면 NaN이 된다.
  • 하지만 모든 비숫자 값이 NaN은 아닙니다. 예를 들어 Infinity(양의 무한대)-Infinity(음의 무한대)는 숫자이며, 또한 null, undefined 등의 값도 NaN은 아님!!!!!!
  • 따라서 부동 소수점 방식에서는 NaN 외에도 Infinity, -Infinity 등의 특수한 값을 가질 수 있다.