如果 console.log(4) 在 Chrome 控制台中输出 undefined 是啥意思?
Posted
技术标签:
【中文标题】如果 console.log(4) 在 Chrome 控制台中输出 undefined 是啥意思?【英文标题】:What does it mean if console.log(4) outputs undefined in Chrome Console?如果 console.log(4) 在 Chrome 控制台中输出 undefined 是什么意思? 【发布时间】:2012-06-21 23:07:48 【问题描述】:我用 Chrome 控制台写了一个简单的语句:
console.log(4)
并收到了 输出:
4
undefined
未定义的语句是什么意思? 未定义的语句是否意味着正确执行?如果我通过单独的 html 文件执行语句,然后查看控制台,输出仅为 4。
【问题讨论】:
Chrome/Firefox console.log always prepends a line saying undefined 的可能重复项 不确定这是否可能是重复的,如果它在 12 年被问到,而你链接的那个是在 13 年被问到的... 我相信Which thread has better and clear-cut answers
也是一个标准,同时将问题标记为重复。这是一种更好地整合 SO 上相关线程的方法。
【参考方案1】:
undefined
是console.log(...)
的返回值。
您可以通过在控制台中定义两个函数来看到这一点,一个返回一些东西,另一个什么也不返回,例如像这样:
function f1()
return 1;
function f2()
return;
然后分别(手动)调用它们
f1(); // shows '1'
和
f2(); // shows 'undefined'
还要注意这些返回值字符串前面的小符号。
【讨论】:
太酷了。这个功能是为了调试目的而实现的吗? 有趣:显然控制台会为您提供最新的返回值,所以如果您调用 f2(); f1();输出只有 1 通过在同一行上一个接一个地调用它们,您实际上是在丢弃第一个结果。顺便说一句,如果你只输入var x = f1();
,你也会看到1
,因为那个表达式的结果仍然是1
。这就是为什么像x = y = z = f1()
这样的语句起作用的原因。
@Bart - 对我来说 'var x = f1();'在控制台中仍然给我未定义。但当然只是 f1() 返回 1 就像它应该的那样。
嗯,显然调用var x=f1();
会得到undefined
,而调用x=f1()
(即没有var
关键字)会得到1
。不确定这是自我之前发表评论以来的新行为,还是我只是错过了它。感谢您注意到这一点。【参考方案2】:
我已经对其进行了测试,即使使用预设变量,它也无法在我的 Safari 中运行:
i = 2;
console.log(i);
这似乎解释了 WebKit(Chrome 和 Safari 的引擎)存在的错误: Link
【讨论】:
以上是关于如果 console.log(4) 在 Chrome 控制台中输出 undefined 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
0202年了, Chrome DevTools 你还只会console.log吗 ?
console.log(new Date(2022, 4, 27).toLocaleString())的结果为啥是2022/5/27 00:00:00?