为什么console.log 说undefined,然后是正确的值?

IT技术 javascript console.log
2021-01-29 02:19:56
console.log("hi") gives 
undefined
hi

console.log(1+1) gives 
undefined
2

无论是字符串还是整数计算,我都会得到 undefined 然后是正确答案。

为什么我会收到未定义的消息?有什么好的方法可以避免吗?

5个回答

控制台将打印计算表达式的结果。评估的结果console.log()undefined因为console.log没有明确返回一些东西。它具有打印到控制台的副作用。

您可以使用许多表达式观察相同的行为:

> var x = 1;
undefined;

变量声明不会产生值,因此会再次undefined打印到控制台。

作为一个反例,包含数学运算符的表达式确实会产生一个打印到控制台的值,而不是undefined

> 2 + 2;
4
如果您想查看刚刚分配的变量的值,可以键入 a;后跟变量名称:var pi = Math.PI; pi
2021-03-21 02:19:56
这就像console.log(console.log('Hi'))在实际控制台之外调用
2021-03-26 02:19:56

undefined是的返回值console.log()这是 Chrome 的 JS 控制台的标准行为

@Pogridis - 尝试 (function(){console.log('hi'); return 1})()
2021-03-22 02:19:56
console.log() 可能因为你没有传入任何东西,但肯定传入的参数不应该返回 undefined ?
2021-03-27 02:19:56
在 JS 中,一切都是函数。如果您将其用作方法,您仍然会得到undefined.
2021-04-10 02:19:56

控制台显示您输入的返回值。 console.log()不返回任何内容,因此未定义。

您可以直接在控制台中键入以获取结果。

这适用于 chrome devtools
2021-03-27 02:19:56

这是因为console.log()不返回值(即返回未定义)。您输入到控制台的任何结果首先打印到控制台,然后稍后来自console.log控制台的消息也被打印出来。

如果浏览器没有显示 undefined,则意味着它已经注意到您的控制台输入仅打印到控制台,因此会跳过显示结果。

它返回 的值console.log(...)

像这样定义两个函数,你就会明白为什么。

function functionA() {
  return 1; 
}
function functionB() {
  return;
}

functionB()返回undefined。

在此处输入图片说明