2016-05-03 21 views
2

このjavascriptコンソールログは私を混乱させます。 ifステートメントで-1の値を持つxがtrueに評価される前に、その行がfalseの場合はどうすればよいですか? 除くおかげ変数がマイナス数に設定されていると評価されます

x = -1 
-1 
x == true 
false 
if(x){console.log('yes')} 
yes 
+0

負の数値(ゼロを除く)は偽の値ではありません。 – isherwood

+0

参照:http://stackoverflow.com/a/3619813 'x == true; // false' - ブール値はこの場合数値にキャストされるので、比較は '-1 == 1 // false'になります – timolawl

+0

** **値をブール値と比較することは**非常に*と異なります** **値をブール値に変換します。 –

答えて

1

if文でxをテストすると、xが真であるかどうかがチェックされていないため、xが真であるかどうかを確認しています。 javascriptの真実性の規則は次のとおりです。

空の文字列は偽です。他のすべての文字列は真実です。 0およびNaNは偽です。他のすべての数字は真実です。 すべてのオブジェクトと配列は真実です。 nullおよびundefinedは偽です。

0
if(-1){console.log('yes')} 

版画 'はい' コンソールのため-1およびその他の数字は-1に等しくないにも関わらず、truthey値です。

Hereは、javascriptのtrutheyとfalsey値に関連する知識を拡張するのに適しています。

関連する問題