質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.37%

Number.IsNaN( )の使い道

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 722

score 24

Number.IsNaN( )ですが、どのような使い道がありますでしょうか。

MDNを見ましたし、自分でも検証してみましたが、NaN, Number.NaN, 0/0の時だけtrueを返すようですが、その他、数値を入力しても、文字列を入力しても、undefinedを入力しても、全てfalseを返します。

false(数値ではない) は数値であるとは同じ意味では無い、、、とは思うのですが、イマイチイメージが掴めません。

お手数ですがNumber.IsNaN( )を使う時はどのような時か教えて頂けると幸いです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+5

お手数ですがNumber.IsNaN( )を使う時はどのような時か教えて頂けると幸いです。

関数名のとおり、NaNかどうかを判定したい場合です。

NaNは、NaN !== NaNとなるなど厄介な特徴を持っているので、専用の判定関数が必要とされます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/08/26 13:22

    明確なご回答ありがとうございます。
    何となくですが、使い道のイメージ出来ました。
    何か複雑な計算をさせて、例えば分母が0になった場合、エラーが出た時だけ警告して欲しい、、、といった感じの場合に使う感じでしょうか。

    キャンセル

  • 2019/08/27 10:03

    > YasuhiroKubotaさん
    ちょっと引っかかりますね。
    「何か複雑な計算をさせて~の場合に使う」のはNaNの用途です。
    NaNに用途があるか否かとは別の話として、NaNをNaNでないものと区別するのがisNaNの用途です。
    どうもisNaN以前にNaNがどういうものなのかの理解が足りていないように見えます。

    キャンセル

  • 2019/08/29 10:43

    ご返信ありがとうございます。
    ご返信が遅くなりまして申し訳ありません。
    皆様からご回答頂いた後、自分でももう少し勉強して、下記理解にたどり着きました。
    isNaN( )は文字列と、undefinedと、NaNをtrueと返すのに対し、
    Number.isNaN( )はNaNのみtrueと返す。
    isNaNはNaNであるかの判定ではなく、引数が数値へ変換可能かどうかの判定に使われる。

    表面上では理解しているつもりですが、本質を理解しているかと言われれば微妙です。

    キャンセル

checkベストアンサー

+2

文字列とかも引数に来うるけど、NaNの場合は0にして返したい、ってときでしょうか。
isNaNは名前の割にNaN以外もtrueにされて困る、ってときはある。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/08/26 12:30

    ご回答ありがとうございます。
    例えば、'abc'といった文字列をtrueにされても困るのはどのような場合でしょうか。

    キャンセル

  • 2019/08/26 13:04

    NaNの時だけ特殊処理したいときですね。なければいいんですが・・・'abc'といった文字列をtrueにされても困る場面もぱっとは思いつかないなぁ。すみません。思いついたら書きます。

    とりあえず「NaN」という値があるのに、isNaN(undefined)がtureってややこしくね?ってのが一番かなぁ。isNaNって「NaNかどうか」じゃなくて「not a numberかどうか」なんかーいややこしいやないかーいって思った偉い人が多かったんでしょうね。

    キャンセル

  • 2019/08/26 13:15

    ご回答ありがとうございます。
    かなり、使い方が限定されているのですね。
    クリアになりました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.37%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る