我制作了一个脚本,将我在duolingo上学到的所有句子都集中到一个console.log输出中。 直到最近,当console.log开始以一种奇怪的方式运行时,它工作得很好:
console.log("Hello\tWorld")
undefined
我在console.log中键入的内容根本不会打印
console.log(document)
undefined
这只发生在这个特定页面上: https://www.duolingo.com/practice (您需要登录)
甚至是一件事吗?阻止你的页面上的console.log这样的函数,阻止它打印任何结果?
有没有办法在控制台中打印一些东西?
答案 0 :(得分:1)
不,它没有。 console.log()
是一个void
- 返回函数,这意味着它不会返回任何值(spec here)。
因此,当您在Chrome控制台中运行此功能时,字符串(即Hello\tWorld
)已正确记录到控制台,但Chrome也会报告该功能的返回值,这是undefined
,因为console.log()
不会返回任何内容。
您可以在下面的屏幕截图中看到Chrome正确地将Hello Word
正确记录到控制台,然后返回undefined
:
答案 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将重新出现在控制台窗口的第一行,您已全部设置好。
“恢复默认设置并重新加载”标签底部的“设置>首选项>”按钮。