비교에 "NaN"을 사용하면 안 됩니다.

반응형
NaN

 그 어떤 것과도 같지 않습니다. 심지어 그 자체도 마찬가지입니다. 평등 또는 불평등 테스트 

NaN

 예측 가능한 결과를 얻을 수 있지만 아마도 원하는 결과가 아닐 수도 있습니다.

대신 변수가 다음과 같은지 확인하는 가장 좋은 방법은 

NaN

 ES2015부터 Number.isNaN()을 사용하거나 (아마 반직관적으로) 자신과 비교하는 것입니다. NaN !== NaN이므로 !== a일 때 이는 동일해야 한다는 것을 알 수 있습니다. 

NaN

.

나쁜 예:

var a = NaN;

if (a === NaN) {  // Noncompliant; always false
  console.log("a is not a number");  // this is dead code
}
if (a !== NaN) { // Noncompliant; always true
  console.log("a is not NaN"); // this statement is not necessarily true
}

좋은 예:

if (Number.isNaN(a)) {
  console.log("a is not a number");
}
if (!Number.isNaN(a)) {
  console.log("a is not NaN");
}
반응형