每次执行console.log
时,都会在输出日志中附加一行undefined
。
Windows和Linux上的Firefox和Chrome都会发生。
答案 0 :(得分:77)
如果您从JS文件运行console.log()
,则不应追加此undefined
行。
如果你从控制台本身运行console.log()
,那就有意义了。这就是为什么:在控制台中,您可以键入变量的名称(例如,尝试键入window
)并打印有关它的信息。当您从控制台运行任何void函数(如console.log)时,它还会打印出有关返回值的信息,在这种情况下为undefined
。
我在我的Chrome上测试了这两个案例(Mac ver 23.0.1271.101),当我在控制台中运行时,我确实看到了undefined
行。当我在控制台中编写此行时,也会显示此undefined
:var 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:
在没有返回值的语句中,您会得到未定义的信息。
答案 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...
(更好的想法欢迎,在某些情况下这可能会爆炸)