2016-04-08 10 views
-4
console.log(typeof NaN) 

上記は「番号」を返します。JavaScript:NaN型の問題を回避するにはどうすればよいですか?

Q1。これを回避するにはどうすればよいですか?

Q2。変数の型を見つける良い方法は何ですか? (typeofの代わりに)

ありがとう!

更新: ご意見ありがとうございました。しかし、最初の回答者は私の質問を理解しました。私は、NaNのreturn文の型を 'Number'として表示しないように評価することを心配していました。

は私が行動するif文でtypeof演算()を使用していたときであれば(typeof演算(X)== "数"){これを行う..}

が、xがNaNだったにも関わらず合格の条件。私はこれを解決したかったのです。

「NaN」が「Number」型であることを知らなかったのは、NaNが「Not a Number」を意味するためです。それは混乱につながった。

私は尋ねたかったことを明確にしていないことをお詫び申し上げます。しかし、私の問題は解決されます。

ありがとうございました!

+4

Q1。何の回り?仕様が返すものを返す型? 2. typeofを使用すると何が問題になりますか? – djechlin

+0

'NaN'は数値型です。あなたは何をしようとしているのですか? –

+0

関連:[なぜ型のNaNが 'number'を返しますか?](http://stackoverflow.com/questions/2801601/why-does-typeof-nan-return-number) –

答えて

-2

スピードが必要でない限り、typeofは使用しないでください。配列とnullの両方で失敗します。しかし、仕様によるとNaNは実際にNumber型です。

使用

var getType = function (obj) { 
    return Object.prototype.toString.call(obj).slice(8, -1); 
}; 
+1

参照エラー:Pubが定義されていません。 – djechlin

+3

また、何ですか?最初の文字を大文字にしてtypeofを返すように見えます。 OPの苦情と思われるNan - > "Number"を含む。そして、内部的には、私はかなり確実です。これは決して「より良い」ものではありません。 – djechlin

+0

これは図書館からのものです。私はあなたがスタンドアローンを使用するためにそれを編集しました。 –

0

あなたは数がNaNでないかどうかを確認したい場合は、isNaN機能を使用することもできます。変数は番号が含まれていないかどうかを確認するには

var val = 4 

console.log(isNaN(val)) // false 

var val2 = NaN 

console.log(isNaN(val2)) // true 

をNaN次に、以下を使用することができます:

typeof val === 'number' && !isNAN(val) 
+1

しかし、 'isNaN(undefined)'は 'true'です。 –

+0

これも役立ちます。ありがとうございました! –