【问题标题】:Chrome/Firefox console.log always appends a line saying 'undefined'Chrome/Firefox console.log 总是附加一行“未定义”
【发布时间】:2013-01-16 00:54:05
【问题描述】:

每次执行console.log,都会在输出日志中附加一行undefined

它发生在 Windows 和 Linux 上的 Firefox 和 Chrome 中。

【问题讨论】:

  • 那么你的问题是什么?你能展示一些产生这个的示例代码吗?您期望的行为是什么?
  • 这可能不足以解决您的问题
  • 我尽了最大努力,尽管它确实缺少一些信息:)
  • console.log() 返回undefined
  • 我的问题是我只显示 errorswarnings,显示 messagesinfo 为我工作。

标签: javascript debugging logging console


【解决方案1】:

如果您从 JS 文件运行 console.log(),则不应附加此 undefined 行。

如果您从控制台本身运行console.log(),这是有道理的。这就是原因:在控制台中,您可以键入变量的名称(例如,尝试键入window)并打印有关它的信息。当您从控制台运行任何 void 函数(如 console.log)时,它还会打印出有关返回值的信息,在这种情况下为 undefined

我在我的 Chrome(Mac 版本 23.0.1271.101)上测试了这两种情况,当我在控制台中运行它时,我确实看到了 undefined 行。这个undefined也出现在我在控制台写这行时:var bla = "sdfdfs"

【讨论】:

  • 感谢您的回复。我从控制台本身运行它,我试图停止所有扩展,但我得到了相同的结果。
  • 嗯,这是预期的行为。一切正常。您可以重新启用扩展 :) 只需从 JS 文件运行 console.log,您将看不到这一点。你为什么要从控制台运行 console.log 呢?您可以在没有 console.log 的情况下键入任何变量名称
  • 但不是以前,这就是原因!!
  • 也许您的 Chrome 已更新,并且此行为在较新版本中开始出现。由于我的 Chrome(在 Mac 上)也发生了同样的事情,我非常怀疑这是一个问题。
【解决方案2】:

虽然talkol的回答还可以,但我尽量说得更直:

JavaScript 被设计为一种动态语言,这意味着函数返回值的类型(字符串、void、布尔值……)不是预先定义的。如果函数不使用 return 语句或没有值的空 return 语句,JavaScript 会自动返回 undefined。这意味着在 JavaScript 中,每个函数都会返回一些东西,至少是未定义的。

所以Chrome控制台中的函数console.log()要么使用no,要么使用空的return语句,所以这个函数的返回值是未定义的。该函数返回值也会显示在 Chrome 控制台中。

[如果有人知道在哪里可以找到谷歌浏览器源代码中console.log()函数的定义,请在链接中发表评论,然后我们甚至可以进一步查看真实代码,会很好。]

来源:

【讨论】:

  • 引用其他帖子很好,但这不是一个完整的答案,因此它更适合作为对您引用的答案的评论。
  • 我尝试这样做,但由于缺乏足够的声誉(“您必须有 50 声誉才能发表评论”),我无法发表评论,所以我认为使用“不理想”的回答方式与其发表评论不如不发帖。
  • 这很公平。但是,如果您不编辑帖子,我将无法删除我的反对票。介意详细说明答案中该链接的内容吗?如果你能做到这一点,那么我可以改变我的投票:)
【解决方案3】:

按照图片解决这个问题:

Ctrl + Shift + J

【讨论】:

  • Firefox 还是 Chrome?
【解决方案4】:

浏览器中的控制台环境旨在获取程序中的最后一个语句表达式并对其进行评估以获得一个值,然后向您显示该值。

赋值表达式的结果是被赋值的值。 所以 JavaScript 引擎只是做了一个赋值,但控制台做了一个额外的步骤,即设置我的最后一个语句,把那个值返回给你。这就是它打印 2 的原因:

在没有返回值的语句中,你会得到类似 undefined 的东西。

【讨论】:

  • 可能有点跑题了,但为什么a=2 返回 2 而var b=2 什么都不返回? (我猜是因为= 是一个返回值的运算符,但为什么它在声明语句中不做同样的事情?)
  • @Fatima,您对此答案的参考是什么?
【解决方案5】:

undefined 是 Chrome 开发者工具中 console.log() 的返回值。如果您在 Chrome 开发人员工具中执行以下操作,您将得到 undefined,即使 x 的值为 3,您也会看到您得到 undefined。

> let x = 3
> undefined

【讨论】:

    【解决方案6】:

    您可以做的只是创建您自己的类似 console.log 的函数,并在开发人员控制台中进行大量编码时返回以更改此行为。以下是开发者控制台中的示例:

    console.log('I hate seeing the next line stating the obvious.')
    I hate seeing the next line stating the obvious.
    undefined
    log = function(l){return l}
    function log()
    if(1 === 2){console.log('1 is not equal to 2.')}else{log('No Shit Sherlock.')}
    "No Shit Sherlock."
    

    【讨论】:

      【解决方案7】:

      同样的问题,但我刚刚清除了我的设置。我进入设置>首选项并单击[恢复默认值并重新加载]。请记住您的设置。

      【讨论】:

        【解决方案8】:

        如果您使用 console.log 在一行中发出多个值,这里有一个 hacky 替代方案:

        var1 + ' ' + var2 + ' ' + var...
        

        (欢迎提出更好的想法,这在某些情况下可能会失败)

        【讨论】:

          猜你喜欢
          • 2017-06-16
          • 1970-01-01
          • 1970-01-01
          • 2014-02-04
          • 2023-03-28
          • 2020-04-22
          相关资源
          最近更新 更多