JavaScript是否有一种机制来确定当前正在执行的语句的行号(如果是,它是什么)?
引用此问题,我正在使用以下代码来查找我的自定义日志记录函数的调用方的行号:
/**
* eLog - displays calling line number & message & dumps vars as pretty json string
* @param {string} msg - string to display in log message
* @param {any} dispVars - any number of variables (ellipsis , aka Rest parameters) to dump
*/
function eLog(msg:string,...dispVars:any[]){
let caller_line = (new Error).stack.split("\n")[4];
console.log(`eLog->Line#${caller_line}->${msg}->`);
console.log(JSON.stringify((new Error).stack.split("\n"),null,2));
dispVars.forEach(value => {
console.log(JSON.stringify(value,null,2));
});
}
Run Code Online (Sandbox Code Playgroud)
这样称呼:
eLog("eLog Test",this);
Run Code Online (Sandbox Code Playgroud)
尽管这样做确实可以正确转储.js文件行号,但我需要源行号(.ts行号)。如何正确生成?