2017-02-01 8 views
2

イムは、標準的な機能を比較すると、常にますisNaN関数に対して同様Javascriptを:常に標準の機能を比較すると、* falseを返す*

>isNaN === true 
false 
>isNaN === false 
false 

しかし

>Boolean(isNaN) 
true 

をブールfalse

を返す理由を理解しようとしています今、物事はもう少し面白くするために

>!isNaN === false 
true 
>!isNaN === true 
false 

これは、番号、オブジェクトなどの標準機能で発生します。

JavaScriptで何が起こっているのか分かりませんか?

+1

を参照するには、以下をご参照ください。どちらの値も、比較する前に暗黙的に他の値に変換されません。そのオペランドがあるときに値が異なるタイプを持っている場合は、値がhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness – Satpal

+0

を参照してくださいunequal._考えられている '' ===のみtrueを返します同じタイプ。 '' 5 '!== 5'、 '0!== false'。 ( 'isNaN == true'も真ではありませんが、ブール値へのキャストと同じ振る舞いを期待する理由はありません。' 2 == true'では、 'true'を数値にキャストしますか?ブール値に '2'をつけていますか?) – Ryan

答えて

2

truthy and falsyの値を簡潔に読むことをお勧めします.NaNは実際に存在する関数なので、trueのチェックのための短い手として使うことができ、日々のプログラミングに非常に便利です。

あなたは===チェックが行われているタイプ、次にブール値を使用!=機能。

!を先行入力すると、実際にブール型にキャストされ、値がtrueに逆転するため、比較が変更されます。ここで

+0

ありがとうございます。このリンクは、概念をより正確に理解するのに役立ちました。 –

1

TruthyFalsy値のリストです。それが機能だから

ますisNaNはtruthyです。

0
>isNaN === true 
false 
>isNaN === false 
false 

isNaNので機能です。


>Boolean(isNaN) 
true 

再び、isNaNは関数であり、関数はtruthy値であるので。 `厳密な等価比較演算子で、_Strict平等は平等のための2つの値を比較===` output specs for Boolean