0

私は3つの数字を合計するこのコードを持っているので、i + j + kですが、結果としてNanを取得します

コードは次のとおりです。

var i = req.param('1', null);
      i = parseInt(i);
      var j = req.param('2', null);
          j = parseInt(j);

      var k = req.param('3', null);
         k = parseInt(k);

      var r = i+j+k;
      res.render('index', {result:r});

これはノードベースのjsです

4

4 に答える 4

3

req.param('2', null)nullパラメータが指定されていない場合に返されます。

次に、 を呼び出しますparseInt(null)NaN

で任意の数を追加するとNaN、 が得られNaNます。


req.param('2', 0)代わりに使用

于 2012-05-25T14:20:04.517 に答える
1

NaN計算の値のいずれかが であるかどうかがわかりますNaN。あなたの例では、おそらくij、および/またはkですNaN。それがどれであるかを確認する必要があります。parseIntが返されることに注意してくださいNaN(たとえば、parseInt(null)is NaN)。


補足: ほとんどの場合parseIntparseInt(i, 10)単にparseInt(i). そうparseIntすれば、基数(基数)を推測しません。

于 2012-05-25T14:18:30.057 に答える
1

JavaScript が を使用して文字列を int に変換する場合parseInt、数値以外の文字が検出されるまで各文字を読み取ります。空白の文字列 ( '') は数値ではないため、 に変換されNaNます。

例:

parseInt('ABC', 10); // NaN
parseInt('123ABC', 10); // 123

したがって、入力が空白でないことを確認する必要があります。実際に数値であることを確認してください。

PS に 2 番目のパラメーターを追加することをお勧めparseIntします。これにより、使用するベースが決まります。除外されている場合は、推測しようとします。これにより問題が発生する場合があります。

parseInt('12'); // 12 (base 10)
parseInt('012'); // 10 (the leading '0' makes it base 8 [octal])

parseInt('012', 10); // 12. forced to be base 10
于 2012-05-25T14:27:55.690 に答える
0

3 つの変数の 1 つが NaN の場合、それは加算ではなく連結です。変数ごとに console.log または alert を実行して個々の値を見つけ、どの値が数値でないかを確認します。

編集...おっと、あなたがすでにそれらを整数に強制しているのを見ました。どっちがいい。したがって、実際にはそのステップでエラーが発生しています...値の1つ(または複数)は数値ではないため、整数に強制することはできません。

于 2012-05-25T14:19:04.923 に答える