【问题标题】:console.log(myFunction()) returns undefinedconsole.log(myFunction()) 返回未定义
【发布时间】:2018-06-29 22:59:54
【问题描述】:

我是 JavaScript 新手,我尝试使用它来了解所有内容。我写

function greet() {
    console.log("Hi");
};

console.log(greet());

它在控制台中的结果是

> Hi app.js:2 
> undefined app.js:4

我认为这是因为console.log 内部的greet() 首先调用了该函数,该函数打印出"Hi"。我们得到第一行日志。 但是第二行是从哪里来的呢?

然后我想因为Higreet()的整体结果,那么console.log基本上调用变量Hi,但在这种情况下结果将是is not defined,而不是undefined

【问题讨论】:

  • greet() 的返回值是未定义的,所以你看到的就是第 4 行的日志。
  • 没有特定return值的函数在执行时默认返回undefined。在浏览器的控制台中检查console.log((function(){})())
  • Hi 不是greet() 的整体结果,该函数只是将消息记录到控制台。看起来您实际上想要 return "Hi"; 没有指定 return 值的函数返回 undefined

标签: javascript undefined console.log


【解决方案1】:

在 JavaScript 中,如果带有关键字 return 的函数没有返回任何内容,则默认返回 undefined

var data = greet();
console.log(data);// undefined, since your function does not return.

相当于:

console.log(greet());

第二个输出是函数的返回结果。由于您没有从函数返回任何内容,因此会打印 undefined

要在第二个控制台中打印“Hi”,您必须从函数中返回它。

function greet() {
  console.log("Hi");
  return 'Hi';
};

console.log(greet());

【讨论】:

    【解决方案2】:

    您应该像这样使用 return 关键字:

    function greet() {
       console.log("HI");
       return "HI";
    };
    console.log(greet());
    

    或者你可以将它存储在一个变量中并返回变量

    function greet() {
       const hello = ("HI");
       return hello;
    };
    cosnole.log(greet());
    

    ,因为如果你不使用return关键字并将函数记录到控制台然后它返回undefined强>。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-27
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      相关资源
      最近更新 更多