node.js在控制台上显示“undefined”

时间:2011-12-10 15:02:04

标签: javascript node.js console undefined

最近我在Windows 7机器上安装了node.js.

在执行JavaScript时,我得到 undefined 消息以及表达式的成功执行。

这里有什么问题?我没有注意到任何其他副作用。

enter image description here

9 个答案:

答案 0 :(得分:42)

JavaScript函数总是返回一些东西。如果你没有在函数中指定要返回的内容,默认情况下会返回'undefined'(你也可以在Firebug中查看)。

不要担心,这不会影响任何事情,你可以忽略它。

答案 1 :(得分:29)

只需撰写"hello world";并按Enter键即可返回"hello world"而不是undefined,因此不会显示undefinedconsole.log返回undefined并将参数记录到控制台,以便您收到多条消息。

答案 2 :(得分:18)

正如其他人所指出的,如果你没有指定任何返回值,javascript函数将始终返回undefined。你可以忽略它。它不会造成任何伤害。 但如果它太烦人了,那么你可以在repl中关闭它。 Repl具有此属性 ignoreUndefined ,默认情况下设置为false。您可以将其设置为true。 试试这个:

module.exports.repl.ignoreUndefined = true;

答案 3 :(得分:6)

嗯,问题是几年前提出的,但还有另一种方法可以解释这里发生的事情。

尝试下一个命令:

console.log("Hello World") || "Bye World";

如上所述,函数console.log()通常会返回undefined,您可以选择更好的返回值。由于非严格(抽象)比较认为undefined等于false||运算符允许您进行选择。

考虑到它只是一个调试工具,这在一般情况下是不必要的,但有助于理解控制台显示文本发送到stdout并且还会破坏命令并且显示返回值,如果没有收到值,则为undefined。

答案 4 :(得分:4)

如果您需要从模块内部打开ignoreUndefined,您可以使用以下行模拟AvinashB的答案,而无需自行键入控制台:

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

答案 5 :(得分:2)

node也打印undefined因为 IN GENERAL ,它会显示每个命令的返回值,而console.log不会返回任何内容。

答案 6 :(得分:0)

发生这种情况是因为console.log具有(空/未定义)返回类型 解决这个问题..有一个返回字符串的函数.. 然后记录该函数返回的值... 可以解决未定义的问题。

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

答案 7 :(得分:0)

只需忽略它,根本无需担心。当我调用没有任何返回类型的函数时,我也遇到了同样的问题。因此,节点用于为调用的函数打印未定义的返回类型。

function emitEvent(eventname){
    eventEmitter.emit(SIV_EVENT);
}
console.log(emitEvent());

在此处https://nodejs.org/api/util.html选中未定义。

答案 8 :(得分:0)

为避免在使用Node的undefined模块时看到命令的repl输出,请在repl.start中将ignoreUndefined设置为true