web-dev-qa-db-ja.com

node.jsはコンソールに「未定義」と表示します

最近、Windows 7マシンにnode.jsをインストールしました。

JavaScriptの実行時に、式の正常な実行とともにndefinedメッセージが表示されます。

ここで何が問題なのですか?私は他の副作用に気づいていません。

enter image description here

45
Sandeep G B

書くだけ "hello world";を押してEnterキーを押します... "hello world"undefinedの代わりに、したがってundefinedは表示されません。 console.logundefinedを返し、コンソールに引数を記録するため、複数のメッセージを取得できます。

29
Esailija

JavaScript関数は常に何かを返します。関数で返すものを指定しない場合、デフォルトで「undefined」が返されます(これはFirebugでも確認できます)。

心配しないでください、これは何にも影響しません、あなたはそれを無視することができます。

44
alessioalex

他の人が指摘したように、戻り値を指定しない場合、javascript関数は常にundefinedを返します。無視しても構いません。害を及ぼすことはありません。しかし、それがあまりにも面倒な場合は、replでオフにすることができます。 ReplにはこのプロパティignoreUndefinedがあり、デフォルトではfalseに設定されています。 trueに設定できます。これを試して:

module.exports.repl.ignoreUndefined = true;
19
AvinashB

質問は数年前に行われましたが、ここで何が起こっているのかを説明する別の方法がまだあります。

次のコマンドを試してください:

_console.log("Hello World") || "Bye World";
_

前述のように、関数console.log()は通常undefinedを返すため、より適切な戻り値を選択できます。非厳密(抽象)比較ではundefinedfalseと等しいと見なされるため、_||_演算子を使用するとその選択が可能になります。

これは単なるデバッグツールであることを考慮すると、これは一般的な使用では不要ですが、コンソールdisplaysテキストがstdoutに送信され、コマンドとdisplaysが返されることを理解するのに役立ちます値、または値が受信されなかった場合は未定義。

7
Melo Waste

モジュール内からignoreUndefinedをオンにする必要がある場合、次の行を使用して、自分でコンソールに入力せずに AvinashB の答えをシミュレートできます。

process.stdin.emit('data', "module.exports.repl.ignoreUndefined = true;\n");
4
RienNeVaPlu͢s

nodeundefinedも出力します。これはIN GENERALであるため、各コマンドの戻り値とconsole.logは何も返しません。

3
student

これは、console.logがこの問題を解決するための(null/undefined)戻り値型を持っているために発生しています。文字列を返す関数があります。

const addNotes= function(msg)
{
    return msg;
}
console.log(addNotes('say hello'));
1
Mahmoud Sayed