当我在 console.log 内调用 console.log 时发生了什么?

What is happening when I call console.log within console.log?

我试图了解当我在另一个 console.log() 中调用 console.log 时发生了什么,就像这样:

console.log(console.log("Hello"));

我的结果是:

Hello
undefined

试图表明未定义的外部 console.log() 是什么?

console.log("Hello")的return值:"void"与javascript[=10中的"undefined"大致相同=]

console.log("Hello") 的第一次调用将 "Hello" 和 returns undefined 值打印到下一次调用。因此顺序是

Hello // from console.log("Hello");
undefined // from console.log(undefined);

console.log() returns 没什么,它只是打印到控制台。因此,您正在尝试 log 一个未定义的值。

正如您在下面看到的,我们用 document.write 模仿 console.log 的行为。正如预期的那样,第二个值未定义:

document.write(document.write("Hello"));

基本上

typeof console = "object"
typeof console.log = "function"
typeof console.log("Hello") = "undefined"

所以第一个console.log(x);在有 x 的地方有一个 undefined。

这是因为您在 console 中编写此代码,而 console.log() 不是 return 任何值。 如果你在任何函数中编写相同的代码,那么你会得到不同的结果

例如

function test()
{
console.log("test")
return 1;
}

现在当你在控制台执行 test() 函数时你会得到

test
1

并且如果您定义另一个函数而不是 return 类型..

  function test2()
    {
    console.log("test")
    }

然后你得到

test
undefined

如果 JavaScript 方法没有明确的 return 则它 return 是 undefined 对象。 console.log 根据 chrome 看起来像:

console.log(object [, object, ...])

So, inner console.log('Hello') //打印输出浏览器控制台但是它 returns undefined 所以 outer console.log 正在打印 undefined.