【问题标题】:Getting undefined when trying to log a function in the console [duplicate]尝试在控制台中记录功能时未定义[重复]
【发布时间】:2019-04-12 07:49:48
【问题描述】:

我有以下代码:

var object = {
    name: 'hello!',
    func: function(){
        console.log(this);
    }
}

console.log(object.func());

我希望每次登录object.func 时都能看到该对象,而这确实发生了,我可以看到该对象。但是在预期的行为之后,我得到了意想不到的行为,undefined 被显示出来。

结果如下:

{ name: 'hello!', func: [Function: func] }
undefined

发生这种情况的原因是什么?

旁注:

我知道我正在控制台记录一些我不应该记录的东西。但是,这仍然无法向我解释为什么undefined

【问题讨论】:

    标签: javascript


    【解决方案1】:

    object.func() 不返回任何内容(因此返回未定义)

    无需记录object.func()的结果

    【讨论】:

      【解决方案2】:

      您正在尝试记录不返回任何内容的函数的结果,因此未定义。只需致电obj.func(),因为您已经在那里处理了日志记录。

      或者在函数上返回一个值并在外面登录

      var obj = {
          name: 'hello!',
          func: function(){
              return this;
          }
      }
      

      【讨论】:

      • console.log(obj.func()); 返回两行:1 .{name: "hello!", func: ƒ} 和 2.undefined
      • @zipzit 您正在执行console.log 两次。第一个在 .func() 方法内,第二个在对象外,这是未定义的,因为 obj.func() 不返回任何内容
      • 我正在使用你的功能。 return this,不是原始提交的东西。注意:我使用的是浏览器控制台。
      • @zipzit 如果您在浏览器的开发工具上进行测试,那是因为console.log() 也没有返回任何内容,这就是为什么浏览器在我们编写的实际只有console.log(value) 之后显示未定义的原因.如果你尝试 OP 提交的代码,你会得到三行结果
      • 我的错。你是对的。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 2012-07-06
      • 2017-05-17
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多