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

Mic*_*ant 28 javascript console.log

console.log("hi") gives 
undefined
hi

console.log(1+1) gives 
undefined
2
Run Code Online (Sandbox Code Playgroud)

无论是字符串还是整数计算,我都会得到未定义的正确答案.

为什么我会收到未定义的消息?有没有好办法避免它?

Jam*_*ice 24

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

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

> var x = 1;
undefined;
Run Code Online (Sandbox Code Playgroud)

赋值表达式不会生成值,因此会再次undefined打印到控制台.

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

> 2 + 2;
4
Run Code Online (Sandbox Code Playgroud)

  • 这就像在实际控制台之外调用`console.log(console.log('Hi'))`. (6认同)
  • 如果您想查看刚刚分配的变量的值,可以键入 `;` 后跟变量名称:`var pi = Math.PI; 圆周率` (2认同)

Adr*_*ian 8

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

  • @Pogrindis - 试试`(function(){console.log('hi'); return 1})()` (2认同)

coo*_*667 5

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

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