Javascript console.log()未在所有浏览器上工作
我最近遇到了一个奇怪的问题,Javascript console.log()未在所有浏览器上工作,javascript,logging,browser,console.log,Javascript,Logging,Browser,Console.log,我最近遇到了一个奇怪的问题,console.log如果在我的代码中使用,则不会输出任何内容,但直接在控制台中使用或使用window.console.log可以正常工作 window.console.log(console); window.console.log(window.console); console.log("test1"); // (won't work) window.console.log("test2"); 输出: 如果我自己定义console,则在代码之前定义conso
console.log
如果在我的代码中使用,则不会输出任何内容,但直接在控制台中使用或使用window.console.log
可以正常工作
window.console.log(console);
window.console.log(window.console);
console.log("test1"); // (won't work)
window.console.log("test2");
输出:
如果我自己定义console,则在代码之前定义console:
var console = window.console;
window.console.log(console);
window.console.log(window.console);
console.log("test1");
window.console.log("test2");
输出:
最奇怪的是,如果我在代码之后自己定义控制台 输出: 回答前请注意:
console
&window.console
的日志返回相同的精确对象(请参见屏幕截图)这是JavaScript的惊人特性之一。在预执行阶段处理
var
指令。所以这个代码:
function foo() {
window.console.log(console);
var console = window.console;
window.console.log(console);
}
相当于:
function foo() {
var console;
window.console.log(console); // console is local variable and undefined
console = window.console;
window.console.log(console);
}
我找到了。。在grunt uglify函数(grunt contrib uglify)中,我们使用
drop\u控制台
选项进行压缩:
uglify: {
options: {
compress: {
drop_console: true
}
},
// ...
很明显,它会删除
控制台的任何外观
,但奇怪的是,它不会删除窗口。控制台
如果发生这种情况,您可能是做错了什么。我似乎无法复制它,所以您的代码必须覆盖某些内容,或者由于某种原因处于最奇怪的作用域,其中window不是“全局”作用域等。按照@adeneo所说的,如果您在控制台中键入this
,您会得到什么?什么是window.console.log(console.log.toString())
show?@epascarello it showfunction log(){[native code]}
您可以发布一个指向完整代码的链接吗?
uglify: {
options: {
compress: {
drop_console: true
}
},
// ...