Chrome/Firefox console.log始终附加一行未定义的行

N. *_*maa 66 javascript debugging console logging

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

适用于Windows和Linux上的Firefox和Chrome.

tal*_*kol 83

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

如果你console.log()从控制台本身运行,这是有道理的.这就是原因:在控制台中,您可以键入变量的名称(例如尝试键入window),然后打印有关它的信息.当您从控制台运行任何void函数(如console.log)时,它还会打印出有关返回值的信息,undefined在本例中.

我在我的Chrome上测试了两个案例(Mac ver 23.0.1271.101),undefined当我在控制台中运行它时,我确实看到了这一行.这undefined时候我写在控制台此行也出现:var bla = "sdfdfs"

  • 好吧,这是预期的行为。一切都按预期进行。您可以启用扩展:)只需从JS文件运行console.log,您将不会看到此信息。您为什么仍要从控制台运行console.log?您可以键入任何变量名称,而无需console.log (2认同)

Pau*_*ang 37

虽然talkol的答案还可以,但我试着说得更直接:

JavaScript被设计为动态语言,这意味着函数返回值的类型(string,void,boolean ...)不是预定义的.如果函数不使用return语句或没有值的空return语句,则JavaScript会自动返回undefined.这意味着在JavaScript中,每个函数都返回一些东西,至少是未定义的.

因此console.log(),Chrome控制台中的函数使用no或者返回空语句,因此未定义此函数的返回值.此功能返回值也会显示在Chrome控制台中.

[如果有人知道在哪里可以找到console.log()谷歌Chrome源代码中的功能定义,请通过链接进行评论,然后我们甚至可以进一步查看真实的代码,会很好.]

资料来源:

  • 我试图这样做,但由于缺乏足够的声誉("你必须有50个评论的声誉"),我无法评论,所以我认为使用"不理想"的回答方式而不是评论会更好然后不会张贴. (3认同)

小智 7

按照图片解决这个问题:

Ctrl + Shift + J
Run Code Online (Sandbox Code Playgroud)

  • 火狐浏览器还是 Chrome 浏览器? (2认同)
  • 请在您的答案中添加一些解释,以便其他人可以从中学习。该图像如何解释“未定义”的含义? (2认同)

小智 7

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

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

这里。

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