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

i7uaboj4  于 2022-11-14  发布在  其他
关注(0)|答案(9)|浏览(156)

每次执行console.log时,都会在输出日志中附加一行undefined
在Windows和Linux上的Firefox和Chrome中都发生了这种情况。

wnrlj8wa

wnrlj8wa1#

如果您正在从JS文件运行console.log(),则不应追加undefined这一行。
如果你是从控制台运行console.log(),这是有意义的。在控制台中,你可以输入变量的名称(例如,尝试输入window),它会打印出关于它的信息。当你从控制台运行任何void函数(如console.log)时,它也会打印出关于返回值的信息,在本例中为undefined
我在我的Chrome(Mac ver 23.0.1271.101)上测试了这两种情况,当我在控制台中运行它时,确实看到了undefined行。当我在控制台中写入以下行时,undefined也会出现:var bla = "sdfdfs"

pgpifvop

pgpifvop2#

虽然talkol的回答是可以的,我试着把它更直接:
JavaScript被设计成一种动态语言,这意味着函数返回值的类型(字符串、空值、布尔值......)不是预定义的。如果函数没有使用return语句或没有值的空return语句,JavaScript会自动返回undefined。这意味着在JavaScript中,每个函数都会返回一些东西,至少是undefined。
因此Chrome控制台中的console.log()函数要么不使用return语句,要么使用空return语句,因此该函数的返回值是未定义的。
[If有人知道在Google Chrome源代码中哪里可以找到console.log()函数的定义,请用链接发表评论,然后我们甚至可以更进一步,看看真实的的代码,这会很好。]
来源:

cx6n0qe3

cx6n0qe33#

按照图片解决此问题:

Ctrl + Shift + J

juzqafwq

juzqafwq4#

浏览器中的控制台环境旨在获取程序中的最后一个语句表达式,并对其求值,然后显示该值。
赋值表达式的结果就是被赋值的值,所以JavaScript引擎只做了一个赋值,但是控制台做了一个额外的步骤,那就是设置我最后一条语句的内容,把那个值返回给你,这就是为什么它打印2:

在没有返回值的语句中,会得到类似undefined的结果。

r1zhe5dt

r1zhe5dt5#

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

> let x = 3
> undefined
ncecgwcz

ncecgwcz6#

你可以做的就是创建一个类似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."
6vl6ewon

6vl6ewon7#

您在console中看到的undefined是函数的返回值:请查看以下两种变体:
此函数不返回任何内容

这个函数返回一些内容:

zqry0prt

zqry0prt8#

记住一件事。任何有定义的函数总是会返回一些东西,如果你跳过return关键字,当你调用它时,它最终会返回undefined。

tgabmvqs

tgabmvqs9#

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

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

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

相关问题