将 console.log 重置为其默认功能

Resetting console.log to it's default functionality

在实时网站上,我之前将 console.log 更改为:

var console = {};
console.log = function () {};

随着这段代码一直在执行,是否可以在这段代码之后恢复控制台功能,如果可以,如何?

这是必需的,因为网站已经上线。但我需要做进一步的开发,而不对实时站点进行任何更新。没有控制台很难 logging/information.

如果该代码不在顶层 运行,因为 consolewindow,您可以只引用 window.console.log,例如:

(() => {
  var console = {};
  console.log = window.console.log;
  console.log('foo');
  // or, just reference window:
  window.console.log('bar');
})();

如果代码在顶层是 运行,并且您使用的是 constlet(而不是 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