将 console.log 重置为其默认功能
Resetting console.log to it's default functionality
在实时网站上,我之前将 console.log 更改为:
var console = {};
console.log = function () {};
随着这段代码一直在执行,是否可以在这段代码之后恢复控制台功能,如果可以,如何?
这是必需的,因为网站已经上线。但我需要做进一步的开发,而不对实时站点进行任何更新。没有控制台很难 logging/information.
如果该代码不在顶层 运行,因为 console
在 window
,您可以只引用 window.console.log
,例如:
(() => {
var console = {};
console.log = window.console.log;
console.log('foo');
// or, just reference window:
window.console.log('bar');
})();
如果代码在顶层是 运行,并且您使用的是 const
或 let
(而不是 ES5 var
),您可以执行相同的操作东西:
const console = {};
console.log = window.console.log;
console.log('foo');
否则,在使用 var
重新分配 console
之前,您必须保存对 console.log
的引用:
var log = console.log;
var console = {};
console.log = log;
log('foo');
但除非绝对必要,否则 create/overwrite built-in 这样的全局变量可能不是一个好主意 - 第一个片段中的 IIFE 可能更可取。
我知道我写这篇文章时已经 1 岁零 8 个月了,但我碰巧找到了一个很好的解决方案。
您可以设置一个全局变量,它将在网站加载时获取 window.console 对象,并设置另一个名为“console”的全局变量,以在您需要时获取旧的控制台状态。
var oldConsole = window.console;
var console = {};
因此,当您需要将控制台重置为正常功能时,您只需执行以下操作:
console = oldConsole.log; // since it's 'window.console.log'
console.log('Hello, world!'); // this output will now display on devtools with its default configuration
在实时网站上,我之前将 console.log 更改为:
var console = {};
console.log = function () {};
随着这段代码一直在执行,是否可以在这段代码之后恢复控制台功能,如果可以,如何?
这是必需的,因为网站已经上线。但我需要做进一步的开发,而不对实时站点进行任何更新。没有控制台很难 logging/information.
如果该代码不在顶层 运行,因为 console
在 window
,您可以只引用 window.console.log
,例如:
(() => {
var console = {};
console.log = window.console.log;
console.log('foo');
// or, just reference window:
window.console.log('bar');
})();
如果代码在顶层是 运行,并且您使用的是 const
或 let
(而不是 ES5 var
),您可以执行相同的操作东西:
const console = {};
console.log = window.console.log;
console.log('foo');
否则,在使用 var
重新分配 console
之前,您必须保存对 console.log
的引用:
var log = console.log;
var console = {};
console.log = log;
log('foo');
但除非绝对必要,否则 create/overwrite built-in 这样的全局变量可能不是一个好主意 - 第一个片段中的 IIFE 可能更可取。
我知道我写这篇文章时已经 1 岁零 8 个月了,但我碰巧找到了一个很好的解决方案。
您可以设置一个全局变量,它将在网站加载时获取 window.console 对象,并设置另一个名为“console”的全局变量,以在您需要时获取旧的控制台状态。
var oldConsole = window.console;
var console = {};
因此,当您需要将控制台重置为正常功能时,您只需执行以下操作:
console = oldConsole.log; // since it's 'window.console.log'
console.log('Hello, world!'); // this output will now display on devtools with its default configuration