如果 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】:

undefinedconsole.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?

离子:console.log 未显示在带有cordova 4.1.1 的xcode 中

firefox 错误 TypeError: console.log is not a function