0

私は何週間もこの問題をいじくり回してきましたが、問題を解決することができません。

元の.jsファイルの外部で実際の関数を呼び出すことができる場所にたどり着くために何日も費やしました。

私がやりたいnode.jsのは、(1-10または1-100)などの特定のパラメーター内で乱数を生成し、それをコンソールまたはによって指定された変数に中継できる関数を作成することだけです。ユーザー。

これは私が持っている現在のコードです:

server.js

var myModule = require("./my_module.js");
console.log("your random number is" + myModule.hello(10));  //<-- the 10 represents the TOP number that will generate, if you look in the proceeding file, it adds a 1 to it as required by the code

my_module.js

function hello(foo) {
return Math.floor((Math.random()*foo)+1);
}

module.exports.hello = hello;

ここで強調している問題は、コンソールからNaN(数値ではない)を取得することです。これは、翻訳のどこかで、数値が文字列に変換され、mathFloor文字列で読み取れない可能性があることを意味します。

4

2 に答える 2

0

jQueryメソッドisNumericを使用して、番号が指定されているかどうかを検証できます。http://api.jquery.com/jQuery.isNumeric/

それがまだ数値であり、誤って文字列にしないようにするには、parseInt()またはparseFloat()を使用します。

function hello(foo) {
return Math.floor((Math.random()*parseInt(foo))+1);
}
于 2013-01-24T22:35:07.483 に答える
0

エリックの答えは問題を解決しますが、文字列がどこから来ているのかはわかりません。console.traceを使用すると、デバッグ作業が簡単になります。

function hello(foo) {
   var result = Math.floor((Math.random()*parseInt(foo))+1);
   if (isNaN(result)) {
      console.trace("result is NaN")
   }
   return result;
}

> hello("a")
Trace: NaN
    at hello (repl:4:9)
    at repl:1:2
    at REPLServer.self.eval (repl.js:109:21)
    at Interface.<anonymous> (repl.js:248:12)
    at Interface.EventEmitter.emit (events.js:96:17)
    at Interface._onLine (readline.js:200:10)
    at Interface._line (readline.js:518:8)
    at Interface._ttyWrite (readline.js:736:14)
    at ReadStream.onkeypress (readline.js:97:10)
    at ReadStream.EventEmitter.emit (events.js:126:20)
    at emitKey (readline.js:1058:12)
    at ReadStream.onData (readline.js:807:7)
NaN
>  

スタックトレースを見ると、Number以外のパラメーターを提供するコードを見つけることができます。

于 2013-01-25T02:43:43.250 に答える