在两个函数中使用console.log两次时只打印一个undefined

时间:2017-03-12 10:36:38

标签: javascript

我有以下代码:

function a()
{
    x = 2;
    console.log(x);
}

function b()
{
    x = 4;
    console.log(x);
}

a();
b();

我期待输出的是:

2
undefined
4
undefined

但我得到的输出是:

2
4
undefined

哪里是未定义的? Chrome控制台的屏幕截图:

Screenshot

2 个答案:

答案 0 :(得分:2)

Chrome控制台旨在返回代码块的最后一项功能。但由于没有什么可以返回,它输出undefined。

这里有一些证据。

function a()
{
    x = 2;
    console.log(x);
    return x;
}

function b()
{
    x = 4;
    console.log(x);
    return x;
}

a();
b();

答案 1 :(得分:2)

在Chrome中的控制台中,当执行代码或代码块时,它将被视为必须返回某个内容的单个函数。当你运行这个块时:

a()
b()

控制台正在对待它:

(function() {
  a()
  b()
})()

当然,它没有返回任何东西。

如果您单独调用这些功能,则会看到2 undefined s。

HTH

PS:undefined听起来很有趣:)