繁体   English   中英

console.log 不打印任何内容,但返回 undefined

[英]console.log doesn’t print anything but returns undefined

我制作了一个脚本,将我在 duolingo 上学习的所有句子抓取到一个 console.log 输出中。 直到最近,当 console.log 开始以一种奇怪的方式运行时,它才完美运行:

console.log("Hello\tWorld")
undefined

我在 console.log 中输入的任何内容都不会被打印出来

console.log(document)
undefined

这只发生在这个特定的页面上: https : //www.duolingo.com/practice (你需要登录)

它甚至是一件事吗? 在您的页面上阻止像 console.log 这样的功能,阻止它打印任何结果?

尽管如此,有没有办法在控制台中打印一些东西?

如果您在console中键入console ,您将看到如下内容:

log: ƒ ()
    ...
    [[FunctionLocation]]: app-676b15de.js:formatted:54288

这表明 console.log() 函数被app-676b15de.js覆盖。 如果你查看那个文件,你会看到:

window.console && fY.forEach(function(e) {
    var t = console[e];
    console[e] = function() {
        for (var e = [], n = 0; n < arguments.length; n++)
            e[n] = arguments[n];
        (k() || window.verbose) && Function.prototype.apply.apply(t, [console, e])
    }
})

最后一行阻止控制台函数执行,除非k()window.verbosetrue

这意味着您可以通过将其添加到脚本顶部来有效地重新启用 console.log():

window.verbose = true;

仅供参考,截至本文发布时,Duolingo 页面是最重要的:

console.log()
console.error()

但不是:

console.info()
console.warn()

因此,您还可以使用后两个函数中的任何一个来代替前两个函数,而无需进行任何其他修改。

不,它没有。 console.log()是一个void -return 函数,这意味着它不返回任何值(此处为 spec )。

因此,当您在 Chrome 的控制台中运行此程序时,字符串(即Hello\\tWorld )会正确记录到控制台,但 Chrome 还会报告该函数的返回值,该值undefined因为console.log()不返回任何内容.

您可以在下面的屏幕截图中看到 Chrome 正确地将Hello Word记录到控制台,然后返回undefined

在此处输入图片说明

“未定义”只不过是您调用的函数的返回。 它打印字符串但是因为它不返回任何内容,所以控制台闪烁未定义。

试试

function abc(){return 2}

现在,当您调用 abc() 时,它将显示 2(未定义)

我在 Chrome 中遇到了同样的问题。 然后我注意到在 Filter 旁边,就在控制台提示的上方,它说“全部隐藏”,这会抑制由 console.log() 打印的消息。 我将其更改为“默认”,问题就消失了。 这与返回类型无关,如前所述,返回类型是无效的。 这只是 Chrome 过滤输出。

我使用了console.info而不是console.log

后者至今仍未在该特定页面上返回任何内容。

尝试恢复默认设置并重新加载控制台。 #document 将重新出现在控制台窗口的第一行中,您就大功告成了。

设置 > 首选项 > 选项卡底部的按钮“恢复默认值并重新加载”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM