如果您正在从JS文件运行console.log(),则不应追加undefined这一行。 如果你是从控制台运行console.log(),这是有意义的。在控制台中,你可以输入变量的名称(例如,尝试输入window),它会打印出关于它的信息。当你从控制台运行任何void函数(如console.log)时,它也会打印出关于返回值的信息,在本例中为undefined。 我在我的Chrome(Mac ver 23.0.1271.101)上测试了这两种情况,当我在控制台中运行它时,确实看到了undefined行。当我在控制台中写入以下行时,undefined也会出现:var bla = "sdfdfs"
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."
9条答案
按热度按时间wnrlj8wa1#
如果您正在从JS文件运行
console.log()
,则不应追加undefined
这一行。如果你是从控制台运行
console.log()
,这是有意义的。在控制台中,你可以输入变量的名称(例如,尝试输入window
),它会打印出关于它的信息。当你从控制台运行任何void函数(如console.log)时,它也会打印出关于返回值的信息,在本例中为undefined
。我在我的Chrome(Mac ver 23.0.1271.101)上测试了这两种情况,当我在控制台中运行它时,确实看到了
undefined
行。当我在控制台中写入以下行时,undefined
也会出现:var bla = "sdfdfs"
pgpifvop2#
虽然talkol的回答是可以的,我试着把它更直接:
JavaScript被设计成一种动态语言,这意味着函数返回值的类型(字符串、空值、布尔值......)不是预定义的。如果函数没有使用return语句或没有值的空return语句,JavaScript会自动返回undefined。这意味着在JavaScript中,每个函数都会返回一些东西,至少是undefined。
因此Chrome控制台中的
console.log()
函数要么不使用return语句,要么使用空return语句,因此该函数的返回值是未定义的。[If有人知道在Google Chrome源代码中哪里可以找到
console.log()
函数的定义,请用链接发表评论,然后我们甚至可以更进一步,看看真实的的代码,这会很好。]来源:
cx6n0qe33#
按照图片解决此问题:
juzqafwq4#
浏览器中的控制台环境旨在获取程序中的最后一个语句表达式,并对其求值,然后显示该值。
赋值表达式的结果就是被赋值的值,所以JavaScript引擎只做了一个赋值,但是控制台做了一个额外的步骤,那就是设置我最后一条语句的内容,把那个值返回给你,这就是为什么它打印2:
在没有返回值的语句中,会得到类似undefined的结果。
r1zhe5dt5#
undefined
是Chrome开发者工具中console.log()的返回值。如果你在Chrome开发者工具中执行以下操作,你会得到undefined,即使x的值为3,你也会看到undefined。ncecgwcz6#
你可以做的就是创建一个类似console.log的函数,在开发者控制台中进行大量编码时,通过返回来改变这种行为。下面是一个开发者控制台中的示例:
6vl6ewon7#
您在console中看到的
undefined
是函数的返回值:请查看以下两种变体:此函数不返回任何内容
这个函数返回一些内容:
zqry0prt8#
记住一件事。任何有定义的函数总是会返回一些东西,如果你跳过return关键字,当你调用它时,它最终会返回undefined。
tgabmvqs9#
如果要使用
console.log
在一行中发出多个值,这里有一个很好的替代方法:(欢迎更好的想法,这可能会在某些情况下爆炸)