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

时间:2017-09-08 08:02:54

标签: javascript console.log

我制作了一个脚本,将我在duolingo上学到的所有句子都集中到一个console.log输出中。 直到最近,当console.log开始以一种奇怪的方式运行时,它工作得很好:

console.log("Hello\tWorld")
undefined

我在console.log中键入的内容根本不会打印

console.log(document)
undefined

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

甚至是一件事吗?阻止你的页面上的console.log这样的函数,阻止它打印任何结果?

有没有办法在控制台中打印一些东西?

6 个答案:

答案 0 :(得分:1)

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

因此,当您在Chrome控制台中运行此功能时,字符串(即Hello\tWorld)已正确记录到控制台,但Chrome也会报告该功能的返回值,这是undefined,因为console.log()不会返回任何内容。

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

enter image description here

答案 1 :(得分:1)

如果您在控制台中输入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.verbose true

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

window.verbose = true;

仅供参考,截至撰写本文时,Duolingo页面已覆盖:

console.log()
console.error()

但不是:

console.info()
console.warn()

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

答案 2 :(得分:0)

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

function abc(){return 2}

现在你打电话给abc() 它将显示2(未定义)

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我使用 mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker marker) { if (marker.equals(yourMarkerObj))// you should compare with your marker not with the google map obj or you can normally pass the intent without condition { Intent intent = new Intent(MainActivity.this, MarkerAdded.class); startActivity(intent); } return false; } }); 代替console.info

后者在该特定页面上仍然没有返回任何内容。

答案 5 :(得分:0)

尝试还原默认设置并重新加载控制台。 #document将重新出现在控制台窗口的第一行,您已全部设置好。

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