Javascript Chrome/Firefox console.log总是在后面加一行,写着';未定义';

Javascript Chrome/Firefox console.log总是在后面加一行,写着';未定义';,javascript,debugging,logging,console,Javascript,Debugging,Logging,Console,每次执行console.log时,输出日志中都会追加一行内容undefined 它在Windows和Linux上的Firefox和Chrome中都会发生。如果您正在从JS文件运行console.log(),则不应附加此未定义的行 如果您正在从控制台本身运行console.log(),这是有意义的。这就是为什么:在控制台中,您可以键入变量的名称(例如,尝试键入window),它会打印有关该变量的信息。当您从控制台运行任何void函数(如console.log)时,它也会打印出有关返回值的信息,在本

每次执行
console.log
时,输出日志中都会追加一行内容
undefined


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

如果您正在从JS文件运行
console.log()
,则不应附加此
未定义的


如果您正在从控制台本身运行
console.log()
,这是有意义的。这就是为什么:在控制台中,您可以键入变量的名称(例如,尝试键入
window
),它会打印有关该变量的信息。当您从控制台运行任何void函数(如console.log)时,它也会打印出有关返回值的信息,在本例中为
undefined


我在我的Chrome(Mac ver 23.0.1271.101)上测试了这两种情况,当我在控制台中运行它时,我确实看到了
未定义的
行。当我在控制台中写这行代码时,也会出现未定义的代码:
var bla=“sdfdfs”
虽然talkol的答案是肯定的,但我还是尽量把它说得更清楚:

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

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

[如果有人知道在Google Chrome源代码中哪里可以找到
console.log()函数的定义,请使用链接进行评论,那么我们甚至可以进一步查看真正的代码,这将非常好。]

资料来源:


如果您使用
console.log
在一行中发出多个值,这里有一个简单的替代方法:

var1 + ' ' + var2 + ' ' + var...

(欢迎更好的想法,在某些情况下可能会爆炸)

按照图片解决此问题:

Ctrl + Shift + J

您只需创建自己的类似console.log的函数,并在开发人员控制台中执行大量编码时返回以更改此行为。下面是开发人员控制台中的示例:

console.log('I hate seeing the next line stating the obvious.')
I hate seeing the next line stating the obvious.
undefined
log = function(l){return l}
function log()
if(1 === 2){console.log('1 is not equal to 2.')}else{log('No Shit Sherlock.')}
"No Shit Sherlock."

浏览器中的控制台环境旨在获取程序中最后一个语句表达式,并对其求值,然后显示该值

赋值表达式的结果是已赋值的值。 所以JavaScript引擎只是做了一个赋值,但控制台做了一个额外的步骤,那就是设置我的最后一个语句,将该值返回给您。这就是为什么它会打印2:


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

undefined
是Chrome developer tools中console.log()的返回值。如果在Chrome developer tools中执行以下操作,您将得到未定义,并且您将看到,即使x的值为3,您也会得到未定义

>设x=3
>未定义

那么你的问题是什么?你能展示一些产生这个的示例代码吗?您期望的行为是什么?可能没有足够的信息来解决您的问题。尽管它确实缺少一些信息,我还是尽了最大努力:)
console.log()
返回
未定义的
。我的问题是我只显示了错误和警告,显示消息和信息对我很有用。谢谢回复。我正在控制台上运行它,我试图停止所有扩展,但得到了相同的结果。这是预期的行为。一切都正常运转。您可以重新启用扩展名:)只需从JS文件运行console.log,您将看不到这一点。为什么要从控制台运行console.log?您可以在没有console.log的情况下键入任何变量名,但以前没有,这就是为什么!!也许你的Chrome已经更新了,而这种行为是从新版本开始的。。由于我的Chrome(Mac)上也发生了同样的事情,我高度怀疑这是一个问题。引用其他帖子是可以的,但这不是一个完整的答案,因此它更适合作为对您引用的答案的评论。我尝试过这样做,但由于声誉不足,我无法发表评论(“您必须有50个声誉才能发表评论”),所以我认为用“非最佳”的方式回答而不是评论会比不发帖更好。这是公平的。不过,如果你不编辑这篇文章,我就不能删除我的反对票。介意详细说明答案中该链接的位置吗?如果你可以这样做,那么我可以改变我的投票:)也许有点离题,但为什么
a=2
返回2而
var b=2
什么也不返回呢?(我猜是因为
=
是一个返回值的运算符,但为什么它在声明语句中不返回相同的值呢?@Fatima,您对这个答案的引用是什么?Firefox还是Chrome?