30

データ型(特に整数)をチェックするために次のことを試みましたが、機能しませんでした。

var i = "5";

if(Number(i) = 'NaN')
{
 console.log('This is not number'));
}
4

8 に答える 8

57

値の型をテストするには、次の 2 つの方法を考えます。

方法 1:

isNaN値がNaNかどうかを判断する JavaScript メソッドを使用できます。しかし、あなたの場合、文字列に変換された数値をテストしているため、Javascript は値の型を推測して、それを 5 ではない数値に変換しようとしていNaNます。そのconsole.logため、結果を出力すると、次のコードに驚かれることでしょう。

if (isNaN(i)) {
    console.log('This is not number');
}

何も返しません。このため、より良い代替手段は方法 2 です。

方法 2:

変数または値の型をテストするには、JavaScriptのtypeofメソッドを使用できます。

if (typeof i != "number") {
    console.log('This is not number');
}

この場合、値の型は文字列ですが、Javascript は内部的に数値に変換されるため、二重等号演算子を使用していることに注意してください。

値を数値型に強制するためのより堅牢な方法は、新しい Ecmascript 6 (Harmony) 提案の一部であるNumber.isNaNを使用することです。そのため、さまざまなベンダーによって広範にサポートされておらず、完全にサポートされていません。

于 2013-09-27T11:02:18.013 に答える
7

私はこの方法でそれを使用しており、正常に動作しています

quantity=prompt("Please enter the quantity","1");
quantity=parseInt(quantity);
if (!isNaN( quantity ))
{
    totalAmount=itemPrice*quantity;

}
return totalAmount;
于 2013-09-27T10:39:27.487 に答える
2

あなたの論理は正しいですが、明らかに誰もが見落としている 2 つの間違いがあります。

に変更if(Number(i) = 'NaN')するだけif(Number(i) == NaN)

NaNは定数であり、比較には二重の等号を使用する必要があります。変数に値を割り当てるには、単一の等号を使用します。

于 2015-10-06T20:12:13.350 に答える
1

isNaN(Number(x)) xが文字列や数値などの任意のものである場合、これを試すことができます

于 2016-09-14T06:06:31.023 に答える