js怎么把变量名转换字符串?
前几天被同事问了一个问题,如何把js
中的变量名转换成字符串输出,当时是下班期间在忙其他事,便说下去看看,今天突然想起来,记录一下:
应用场景:比如要把我们经常在开发中的调试输出的console.log
封装一下,因为我们为了在控制台容易找到我们输出的内容,经常打印会采用下面这样的方式:
let name = "tom", age = 18;console.log('name:', name);console.log('age:', age);// 输出 name:tom age:18
那么问题来了,我们有没有什么办法,比如封装某个方法someFn
,然后传入变量,然后直接输出这样字符串变量名 + 变量值
的形式呢?
原则上是不行的,因为我们在传参或者使用变量名的时候,其实拿到的都是变量的值。我们都知道对象我们在访问的时候能通过一个key
和value
来访问对象的属性和属性值,那我们能不能将变量通过类似对象这样的方式来访问呢,带着这个问题我们继续往下看,我们在写代码中经常会用到对象这样的写法:
let name = 'tony';let someOne = {name,age: 18}// someOne: {name: 'tony', age: 18}
我们无法直接将变量当作形参的方式传入函数中,但是我们可以从name
属性的写法中得到启示来进行转化。例如我们写一个Log
方法,方便调试使用:
const Log = (data = {}) => {if(data) {const key = Object.keys(data)[0];const value = Object.values(data)[0];console.log(key, value)}}
在调用的时候需将变量转化成对象即可:
let name = 'tony',age = 18, hobby = {sport: 'baseketball' , music: 'pop' };Log({name}); // name tonyLog({age}); // age 18Log({hobby}); // hobby {sport: 'baseketball', music: 'pop'}
如果觉得《js怎么把变量名转换字符串?》对你有帮助,请点赞、收藏,并留下你的观点哦!