Javascript 如何控制台记录变量/函数的名称?
我想这样做:Javascript 如何控制台记录变量/函数的名称?,javascript,Javascript,我想这样做:log(variableOrFunction) 并且能够生成:变量或函数:actualValue 我试过这个: export const log = (value) => { console.log('' + value + ':', value) console.log(value) } 但我得到的却是:[object]: 这样做的正确性是什么?该“值”属于Object类型。使用JSON.stingify查看详细信息 export const log = (valu
log(variableOrFunction)
并且能够生成:变量或函数:actualValue
我试过这个:
export const log = (value) => {
console.log('' + value + ':', value)
console.log(value)
}
但我得到的却是:[object]:
这样做的正确性是什么?该“值”属于Object类型。使用JSON.stingify查看详细信息
export const log = (value) => {
console.log('' + value + ':', JSON.stringify(value))
console.log(JSON.stringify(value))
}
如果“值”是对象类型。您可以尝试console.dir(value)而不是long console.log,并且应该能够在控制台中以更好的格式查看对象树键:值对
function someFunction(){};
const someOtherFunction=()=>{};
常数someValue=9;
log({someFunction});
log({someOtherFunction});
log({someValue});
const=someFunction;
log({重命名})
您无法在JS解释器中以您描述的方式实现这一点。无法获取日志函数中变量的名称
您只能在日志函数的调用者内部执行此操作,方法是将调用函数转换为字符串,解析代码并获取传递给日志函数的变量名
您可以尝试获取log函数的调用者并执行我所描述的操作,但我不建议这样做。这对您有用吗
const log = function() {
const key = Object.keys(this)[0];
const value = this[key];
console.log(`${key}:${value}`);
}
let someValue = 2;
log.call({someVlaue}); //someValue:2
也适用于函数,甚至是函数本身
log.call({log});
// It would return the following
log:function() {
const key = Object.keys(this)[0];
const value = this[key];
console.log(`${key}:${value}`);
}
基于@CRice-answer:
const arr=[10,20,30,40,50]
const obj={a:10,b:20,c:30,d:{e:40}
const str=“abcdef”
功能定位(obj){
Object.entries(obj.forEach(([key,value])=>console.log(key+“:”,value))
}
努力({arr})//arr:[10,20,30,40,50]
slog({obj})//obj:{a:10,b:20,c:30,d:{e:40}
slog({str})//str:abcdef
可能重复@drkibitz这是es6的一项功能,因此它应该可以在任何支持es6的地方工作。您能否澄清一下,您的意思是,某些浏览器一般不支持es6,还是不支持此功能?不支持此特定es6feature@CRice我认为几乎每个项目都有一个ES6解析器(例如Webpack)。天才解决方案谢谢!(有趣的是,很多人说这是不可能的。我猜JavaScript没有什么是不可能的。)在我的回答中,我没有说“不可能”,我说不可能的方式和你一样described@CRice哦,我刚刚意识到它不可能是函数:export const log=(value)=>{console.log({value}}}
它将始终返回{value:…}