能否关闭Firefox/Chrome开发者工具中console.log的输出截断?
是否存在浏览器设置可增加或禁用开发者工具中console.log的截断长度?
我想寻找无需修改代码的方法,解决Chrome和Firefox共有的一个控制台日志bug:当打印对象后修改它,展开控制台里的对象时,显示的是修改后的当前状态,而非执行console.log时的状态,这种输出极具误导性。
该bug的具体表现
运行以下代码:
function myConsoleLog(param) { console.log(param, param.x); } const xObj = { x: false }; myConsoleLog(xObj); xObj.x = true;
执行后控制台表面输出如下:
点击对象左侧的展开图标后,显示的是对象的当前状态(x: true),而非日志执行时的状态(x: false):
如果能让console.log直接输出完整对象内容无需展开,就能避免这类误导,但Chrome和Firefox默认会截断长对象的输出。比如运行以下代码:
function nextChar(c) { return String.fromCharCode(c.charCodeAt(0) + 1); } const bigObj = {}; for (let i = "a".charCodeAt(0); i <= "z".charCodeAt(0); i++) { bigObj[String.fromCharCode(i)] = parseInt(Math.random() * 100); } console.log(bigObj);
理想的完整输出应该是这样:
但Firefox开发者控制台默认会将其截断为:
我已经知道代码层面的解决方案(比如序列化对象后再打印),但想了解是否有无需修改代码,仅通过浏览器设置就能查看完整输出、避免上述bug的方法。
内容的提问来源于stack exchange,提问作者Daniel Kaplan
相关产品推荐
相关产品推荐

