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

时间:2013-01-31 19:50:44

标签: javascript debugging logging console

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

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

7 个答案:

答案 0 :(得分:77)

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

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

我在我的Chrome上测试了这两个案例(Mac ver 23.0.1271.101),当我在控制台中运行时,我确实看到了undefined行。当我在控制台中编写此行时,也会显示此undefinedvar bla = "sdfdfs"

答案 1 :(得分:34)

尽管talkol的答案还可以,但我试着更直接地说:

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

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

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

来源:

答案 2 :(得分:6)

按照图片解决此问题:

Ctrl + Shift + J

答案 3 :(得分:3)

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

赋值表达式的结果是所赋值。 因此,JavaScript引擎只是进行分配,而控制台又执行了一个额外的步骤,即设置我的最后一条语句,然后将其返回给您。这就是为什么打印2:

here.

在没有返回值的语句中,您会得到未定义的信息。

答案 4 :(得分:1)

你可以做的就是创建你自己的console.log之类的函数,返回可以在开发人员控制台中进行大量编码时改变这种行为。以下是开发人员控制台中的示例:

g = sample.groupby('username')['Correctness'].apply(list).reset_index()
g[['Q1A','Q1B']] = g['Correctness'].apply(pandas.Series)
res = g.pivot_table(index='Q1A', columns='Q1B', values='username',aggfunc='count').fillna(0)

答案 5 :(得分:0)

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

> let x = 3
> undefined

答案 6 :(得分:-3)

如果你使用console.log在一行中发出多个值,这里有一个hacky替代方案:

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

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