2017-08-08 9 views
1

javascriptでこのステートメントを評価するには?あなたはそれが二つの異なるブール出力を作る数と同じではない文で数、だかどうかを確認しようとしているので、javascriptでNaNの等価性を評価するには?

isnan = NaN; 
notnan = "hello"; 
typeof(notnan) === "number" && isNaN(notnan); 
+1

、何かを言うのだろうか?式の最初の部分が「真」であれば、式の第2部分もどのように「真」になりますか?右側の – guest271314

+0

:2つのオペランドがandによって評価され、次に等価チェックされるか、または右側の任意のオペランドと等しいかどうかがチェックされ、次に両方の結果が評価されますか? –

+1

値は数値であり、同時に数値ではありません。今のところ量子計算がJavaScriptで実装されていない限り、 – guest271314

答えて

0

これなステートメントは、非論理的です。あなたはそれを反転することが予想される場合は

typeof(notnan) === "number" && isNaN(notnan); 

は、私はあなたが開始する!を追加し、あなたが

if (!isNaN(notnan)) { 
    // Code if it's a number 
} else { 
    // Code if it's not a number 
} 

を探していると信じて、それ

!isNaN(notnan) 
/* 
* Returns opposite of isNaN, if it's a number then `true` 
* else returns `false`. 
*/ 

EDIT:

typeof(notnan) === "number" && isNaN(notnan); 

理由はこれはうまく動作しない理由は、notnanが文字列なので、falseを返し、正しく評価しません。 isNaNのみが完全に正常に動作します。

+0

は変数(リテラル)をチェックするためにナンです。この変数はtypeofであることを確認する必要があります.NaNは数値であり、ckeckはこの型のNaN型です。 –

+0

@hassanmohagheghiyan入力に応じてisNaN関数自体がtrueまたはfalseを返す場合、そのようなことをチェックする点はなんですか? parseInt()を使用して、処理中の数値であることを確認できます。 – Cernodile

+0

typeof(isnan)=== NaNのflaseを確認してください! –

0

実行これは、それが結果が期待される何

isnan = NaN; 
 
notnan = "hello"; 
 
if (typeof(notnan) === "number" && isNaN(notnan)){ 
 
    console.log('yes'); 
 
} 
 
else { 
 
    console.log('typeof(notnan) is :',typeof(notnan), '\n isNaN(notnan) :', isNaN(notnan),'\n this is,',typeof(notnan)=== "number",'-',isNaN(notnan), 'so this condition became false...') 
 
}