この記事では、JavaScriptの isNaN
関数の挙動について具体的な例を通じて紹介します。
以下に、さまざまな型に対する isNaN
の評価結果を記載します。
備忘録としてご利用ください。
1. undefined の場合
undefined
を評価すると、isNaN
は true
を返します。このことから、undefined
は非数値として評価されると言えます。
console.log(isNaN(undefined)); // true
2. null の場合
null
を評価すると、意外にも isNaN
は false
を返します。なぜなら、null
は暗黙的に 0
と解釈されるからです。
console.log(isNaN(null)); // false
3. 数値型の場合
当然ながら、数値型のデータは数値として評価されます。よって isNaN
は false
を返します。
console.log(isNaN(123)); // false
console.log(isNaN(-456)); // false
4. 文字列型の場合
文字列型のデータは、その内容によります。文字列が数値を表している場合、isNaN
は false
を返します。それ以外の場合は true
を返します。
console.log(isNaN("123")); // false
console.log(isNaN("Hello World")); // true
5. オブジェクト型の場合
オブジェクト型を評価すると、通常 isNaN
は true
を返します。
console.log(isNaN({})); // true
console.log(isNaN([])); // false, 空の配列は暗黙的に0に変換されます
6. 真偽値型の場合
真偽値型を評価すると、isNaN
は false
を返します。JavaScriptでは、true
は 1
として、false
は 0
として扱われます。
console.log(isNaN(true)); // false
console.log(isNaN(false)); // false
7. 配列の要素がある場合
配列の要素が1つで数値の場合、isNaN
は false
を返します。それ以外の場合(複数の要素がある場合や要素が非数値の場合)は、true
を返します。
console.log(isNaN([123])); // false
console.log(isNaN([123, 456])); // true
console.log(isNaN(["Hello"])); // true
8. NaN 自体を評価する場合
NaN 自体を評価すると、isNaN
は true
を返します。NaN は "Not a Number" の略で、非数値を表す特殊な値です。
console.log(isNaN(NaN)); // true
参考リンク
おわりに
ビジネスロジックの構築時に意外と登場する機会が多いです。
特に null, undefined あたりの挙動は混乱しがちなので備忘録として覚えておきましょう。
コメント