Numbers
number: NaN は自分自身とも === で等しくない
NaN は通常の等価比較では判定できない特別な number 値です。
SourcenanValues.ts
Node.js 22
export function isNotANumber(value: number): boolean {
return Number.isNaN(value);
}TestnanValues.test.ts
Node.js 22
import assert from "node:assert/strict";
import test from "node:test";
import { isNotANumber } from "../../src/numbers/nanValues.js";
test("NaNは===では等しくない", () => {
const result = Number("not-a-number");
assert.equal(result === result, false);
assert.equal(isNotANumber(result), true);
});01Assertion
このテストで確認できること
- NaN === NaN は false になる
- Number.isNaN で NaN を明示的に判定できる
数値計算の失敗や変換失敗を NaN のまま伝播させないように、境界で Number.isNaN を確認します。
OBSERVED RESULT
expected: NaN === NaN → false
actual: false
expected: Number.isNaN(NaN) → true