0

私はいくつかのノードコアモジュールを学んでおり、readlineモジュールをテストするための小さなコマンドラインツールを書きましたが、私のconsole.log()出力では、undefinedその下でも受信しています:/

これが私のコードです..

var rl = require('readline');

var prompts = rl.createInterface(process.stdin, process.stdout);

prompts.question("What is your favourite Star Wars movie? ", function (movie) {

    var message = '';

    if (movie = 1) {
        message = console.log("Really!!?!?? Episode" + movie + " ??!?!!?!?!, Jar Jar Binks was a total dick!");
    } else if (movie > 3) {
        message = console.log("They were great movies!");
    } else {
        message = console.log("Get out...");
    }

  console.log(message);

  prompts.close();
});

そして、これが私のコンソールで見ているものです..

What is your favourite Star Wars movie? 1
Really!!?!?? Episode1 ??!?!!?!?!, Jar Jar Binks was a total dick!
undefined

なぜ私は戻ってくるのundefinedですか?

4

2 に答える 2

5

なぜ私は戻ってくるのundefinedですか?

console.logには戻り値がないため、 に代入undefinedしていmessageます。

後で出力するので、メッセージを設定している行から呼び出しをmessage削除するだけです。console.log例: 変更

message = console.log("Really!!?!?? Episode" + movie + " ??!?!!?!?!, Jar Jar Binks was a total dick!");

message = "Really!!?!?? Episode" + movie + " ??!?!!?!?!, Jar Jar Binks was a total dick!";

補足: あなたのセリフ

if (movie = 1) {

に番号1割り当てmovie、結果 ( 1) が正しいかどうかをテストします。したがって、何を入力しても、常にそのブランチが使用されます。あなたはおそらく次のことを意味していました:

if (movie == 1) {

...ただし、ユーザー指定の入力の暗黙的な型強制に依存しないことをお勧めします。そのため、これをそのコールバックの上部に配置します。

movie = parseInt(movie, 10);
于 2013-02-17T11:35:48.807 に答える
1

console.logは値を返さないため、結果はundefined.

注: 比較は で行われます。==例: movie == 1

于 2013-02-17T11:35:47.377 に答える