console.log 调试器中的行号
console.log line number in debugger
我正在寻找一种制作日志功能的简单方法。
我正在调用函数 logSuc("return from Prom")
,函数在第 30 行。
因此代码将始终指向该函数的第 30 行。在控制台中:
所以说有这个代码:
const logSuc = (msg) => {
console.log(`%c ${msg}`, 'background: green; color: white; display: block;');
};
备选方案可以是:
const log = console.log;
function red(msg) {
return `%c ${msg}`, 'background: red; color: white; display: block;';
}
log(red('its red');
但现在我有两个函数,我想保持简短
所以问题是我的logSuc("")
总是指向第30行。
但我希望它指向我调用 logSuc("that worked").
的 行
您在 console.log
上使用 Function.prototype.bind
获得的函数将指向调用它的行号。它有点受限,但如果你只想传递一个字符串参数,它会起作用:
const logSuc = console.log.bind(console, '%c %s',
'background: green; color: white');
已在 Firefox 和 Chrome 中测试。
对于更复杂的行为,您可以手动黑盒包含日志记录功能的脚本,如 this answer 中所述 Chrome 并通过在调试器中激活脚本上的“黑盒”按钮Firefox(在 {} Pretty print source
旁边,一个眼睛图标)。
我建议您将 console.log
替换为 console.trace
。这样你就可以看到电话是从哪里来的,从而解决你的问题。
我正在寻找一种制作日志功能的简单方法。
我正在调用函数 logSuc("return from Prom")
,函数在第 30 行。
因此代码将始终指向该函数的第 30 行。在控制台中:
所以说有这个代码:
const logSuc = (msg) => {
console.log(`%c ${msg}`, 'background: green; color: white; display: block;');
};
备选方案可以是:
const log = console.log;
function red(msg) {
return `%c ${msg}`, 'background: red; color: white; display: block;';
}
log(red('its red');
但现在我有两个函数,我想保持简短
所以问题是我的logSuc("")
总是指向第30行。
但我希望它指向我调用 logSuc("that worked").
的 行您在 console.log
上使用 Function.prototype.bind
获得的函数将指向调用它的行号。它有点受限,但如果你只想传递一个字符串参数,它会起作用:
const logSuc = console.log.bind(console, '%c %s',
'background: green; color: white');
已在 Firefox 和 Chrome 中测试。
对于更复杂的行为,您可以手动黑盒包含日志记录功能的脚本,如 this answer 中所述 Chrome 并通过在调试器中激活脚本上的“黑盒”按钮Firefox(在 {} Pretty print source
旁边,一个眼睛图标)。
我建议您将 console.log
替换为 console.trace
。这样你就可以看到电话是从哪里来的,从而解决你的问题。