admin管理员组文章数量:1134232
Every time console.log
is executed, a line saying undefined
is appended to the output log.
It happens in both Firefox and Chrome on Windows and Linux.
Every time console.log
is executed, a line saying undefined
is appended to the output log.
It happens in both Firefox and Chrome on Windows and Linux.
Share Improve this question edited Oct 20, 2020 at 17:21 Peter Mortensen 31.6k22 gold badges109 silver badges133 bronze badges asked Jan 31, 2013 at 19:50 N. ChamaaN. Chamaa 1,5774 gold badges12 silver badges22 bronze badges 5 |9 Answers
Reset to default 122If you're running console.log()
from a JS file, this undefined
line should not be appended.
If you're running console.log()
from the console itself, it makes sense. This is why: In the console you can type a name of a variable (for example try typing window
) and it prints info about it. When you run any void function (like console.log) from the console, it also prints out info about the return value, undefined
in this case.
I tested both cases on my Chrome (Mac ver 23.0.1271.101) and indeed I see the undefined
line when I run it inside the console. This undefined
also appears when I write this line in the console: var bla = "sdfdfs"
Although talkol´s answer is ok, I try to put it more straight:
JavaScript is designed as a dynamic language which means that the type (string, void, boolean …) of a function return value is not pre-defined. If a function does not use a return statement or an empty return statement with no value, JavaScript automatically returns undefined. That means that in JavaScript every function returns something, at least undefined.
So the function console.log()
in Chrome console either uses no or an empty return statement, so that the return value of this function is undefined. This function return value gets also displayed in the Chrome console.
[If somebody know where to find the definition of the console.log()
function in Google Chrome source code, please comment with the link, then we can even go further and look at the real code, would be nice.]
Sources:
- https://stackoverflow.com/a/20915524/1744768
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript
Follow the picture to solve this problem:
Ctrl + Shift + J
Console environment in your browser is designed to take the very last statement expression in a program and evaluate it for a value and then show you that value.
The result of an assignment expression is the value that was assigned. So the JavaScript engine just does an assignment but the console does one extra step which is to set whatever my last statement is, give you that value back. That’s why it prints 2:
In statements that have no return value you get something like undefined.
That undefined
you see in console is the return value of the function:
check out these two variants:
This one returns nothing
This one returns something:
undefined
is the return value of the console.log() in Chrome developer tools. You will get undefined if you do the following in Chrome developer tools, and you will see that you get undefined even though x has the value 3.
> let x = 3
> undefined
What you can do is simply create your own console.log like function with a return to change this behavior when doing a lot of coding in the developer console. Here is an example of what that looks like in the developer console:
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."
Remember one thing. Any function that has some definition will always return something, If you skip the return keyword, it will eventually return undefined when you call it.
If you're using console.log
to emit multiple values in a single line, here's a hacky alternative:
var1 + ' ' + var2 + ' ' + var...
(Better ideas welcome, this might blow up in certain circumstances)
本文标签: javascriptChromeFirefox consolelog always appends a line saying 39undefined39Stack Overflow
版权声明:本文标题:javascript - ChromeFirefox console.log always appends a line saying 'undefined' - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736834157a1954826.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
console.log()
returnsundefined
. – gen_Eric Commented Jan 31, 2013 at 19:59