Chrome/Firefox console.log 总是附加一行说“未定义”

IT技术 javascript debugging logging console
2021-01-16 03:39:47

每次console.log执行时,都会undefined在输出日志中附加一行语句

它发生在 Windows 和 Linux 上的 Firefox 和 Chrome 中。

6个回答

如果您console.log()从 JS 文件运行,则undefined不应附加行。

如果您console.log()从控制台本身运行,这是有道理的。这就是为什么:在控制台中,您可以输入变量的名称(例如尝试输入window)并打印有关它的信息。undefined在这种情况下,当您从控制台运行任何 void 函数(如 console.log)时,它还会打印出有关返回值的信息

我在 Chrome(Mac 版本 23.0.1271.101)上测试了这两种情况,undefined当我在控制台中运行它时,确实看到了这一行。undefined当我在控制台中写下这一行时,也会出现:var bla = "sdfdfs"

但它不是以前,这就是为什么!!
2021-03-21 03:39:47
嗯,这是预期的行为。一切正常。您可以重新启用扩展:) 只需从 JS 文件运行 console.log,您就不会看到这个。你为什么要从控制台运行 console.log 呢?您可以在没有 console.log 的情况下输入任何变量名称
2021-03-25 03:39:47
感谢您的回复。我从控制台本身运行它,我试图停止所有扩展,但我得到了相同的结果。
2021-04-05 03:39:47
也许您的 Chrome 已更新并且此行为在较新版本中开始.. 由于同样的事情发生在我的 Chrome(在 Mac 上)中,我非常怀疑这是一个问题..
2021-04-06 03:39:47

虽然talkol的回答没问题,但我试着更直截了当地说:

JavaScript 被设计为一种动态语言,这意味着函数返回值的类型(字符串、空值、布尔值……)不是预先定义的。如果函数不使用 return 语句或没有值的空 return 语句,JavaScript 会自动返回 undefined。这意味着在 JavaScript 中,每个函数都会返回一些东西,至少是未定义的。

因此console.log()Chrome 控制台中的函数要么使用 no 要么使用空的 return 语句,因此该函数的返回值是未定义的。此函数返回值也会显示在 Chrome 控制台中。

【如果有人知道console.log()谷歌浏览器源代码中函数的定义在哪里可以找到,请在链接里评论,然后我们甚至可以更进一步看看真正的代码,会很好。】

资料来源:

我试图这样做,但由于缺乏足够的声誉(“你必须有 50 个声誉才能发表评论”),我无法发表评论,所以我认为使用“非最佳”的回答方式而不是评论会更好发帖。
2021-03-24 03:39:47
这还算公平。但是,如果您不编辑帖子,我将无法删除我的反对票。介意详细说明答案中该链接的内容吗?如果你能做到,那么我可以改变我的投票:)
2021-04-06 03:39:47
引用其他帖子很好,但这不是一个完整的答案,因此它更适合作为对您引用的答案的评论。
2021-04-09 03:39:47

按照图片解决这个问题:

Ctrl + Shift + J

火狐还是Chrome?
2021-04-05 03:39:47

浏览器中的控制台环境旨在获取程序中的最后一个语句表达式并评估它的值,然后向您显示该值。

赋值表达式的结果是被赋值的值。所以 JavaScript 引擎只是做了一个赋值,但控制台做了一个额外的步骤,即设置我的最后一条语句是什么,把那个值还给你。这就是它打印 2 的原因:

这里。

在没有返回值的语句中,您会得到类似 undefined 的信息。

@Fatima,您对这个答案的参考是什么?
2021-03-14 03:39:47
也许有点跑题,但为什么a=2返回 2 而var b=2什么都不返回?(我猜是因为=是一个返回值的运算符,但为什么它在声明语句中不做同样的事情?)
2021-04-04 03:39:47

undefined是 Chrome 开发者工具中 console.log() 的返回值。如果您在 Chrome 开发人员工具中执行以下操作,您将得到 undefined,并且即使 x 的值为 3,您也会看到您得到 undefined。

> let x = 3
> undefined