node.js 在控制台上显示“未定义”

IT技术 javascript node.js console undefined
2021-03-13 00:01:39

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

在执行 JavaScript 时,我收到一条未定义的消息以及表达式的成功执行。

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

在此处输入图片说明

6个回答

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

不过不用担心,这不会影响任何事情,您可以忽略它。

如果你制作一个程序(网络应用程序或命令行),你永远不会得到“飞行”未定义,所以不要担心。
2021-04-15 00:01:39
谢谢。现在明白了 :) 我应该开始研究事情是如何实现的,而不仅仅是如何让它工作。
2021-04-18 00:01:39
当我不输入任何函数或任何字符时;然后还会显示“未定义”。你能解释一下幕后发生了什么吗?
2021-04-30 00:01:39
引擎盖下发生了什么。例如,输入 asdasd 并看到此错误:在 REPLServer.eval (repl.js:80:21) ... 所以在幕后有一个 eval() 函数返回“未定义”。
2021-04-30 00:01:39
+1。谢谢回复。有没有办法摆脱“未定义”,语法应该是什么?
2021-05-11 00:01:39

只需写入"hello world";并按回车键...它将返回"hello world"而不是undefined,因此不undefined显示。console.log返回undefined并将参数记录到控制台,以便您获得多条消息。

我试图了解发生了什么。alessioalex 回答了我的问题 :)
2021-04-20 00:01:39
谢谢艾赛利亚。当我不输入任何函数或任何字符时;然后还会显示“未定义”。你能解释一下幕后发生了什么吗?
2021-04-26 00:01:39
@SandeepGB,您对没有任何输入有何期望?:P 不输入任何内容的返回值最有意义undefined
2021-05-10 00:01:39

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

module.exports.repl.ignoreUndefined = true;

好吧,这个问题是几年前提出的,但还有另一种方式来解释这里发生的事情。

尝试下一个命令:

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

如前所述,函数正常console.log()返回undefined,您可以选择更好的返回值。由于非严格(摘要)相比,认为undefined等于false||运营商允许你这样的选择。

考虑到它只是一个调试工具,这在一般使用中是不必要的,但有助于理解控制台显示发送到 stdout 的文本并评估命令并显示返回值,或者如果没有收到值则为 undefined。

嗨@Melo,我认为这段代码可以重写为更好的 console.log("Hello World") || 《再见世界》。
2021-05-15 00:01:39

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

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