作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好吧,假设我有各种各样的变量:
tab = document.createOjbect('table');
str = 'asdf';
ary = [123, 456, 789];
obj = {a:123, b:456, c:789};
一段代码来“字符串化”它们:
function Stringify(){
var con = this.constructor.name;
if(con == 'String') return this;
if(con == 'Arrray') return this.toString();
if(con == 'Object') return JSON.stringify(this);
if(con == 'HTMLTableElement') return this.outerHTML;
}
包含变量的数组:
var aVar = [tab, str, ary, obj];
我循环数组以“字符串化”其内容:
for(var i in aVar){
console.log(
Stringify.call( aVar[i] );
);
}
我得到了预期的字符串对象列表:
<table></table>
asdf
123,456,789
{"a":123,"b":456,"c":789}
但是如果我想在日志中包含变量的名称怎么办?:
tab: <table></table>
str: asdf
ary: 123,456,789
obj: {"a":123,"b":456,"c":789}
我该怎么办?:
for(var i in aVar){
var id = // get the name of the variable at aVar[i]
console.log(
id + ': ',
Stringify.call( aVar[i] );
);
}
最佳答案
这是不可能的,也没有任何意义。您必须了解函数操作值,而不是变量。
执行此操作时:
var aVar = [tab, str, ary, obj];
放入数组中的是值,而不是变量,尽管从语法上看是这样。这些值对引用它们的变量一无所知。
想一想:一个值可以被多个变量引用。获取在早些时候引用过它的(其中一个)变量的名称有什么意义?
恐怕您的用例的唯一解决方案是在执行流程中携带“变量名称”,或者对每个变量的逻辑进行硬编码。
关于javascript - 如何在 JavaScript 中检索变量的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28683361/
我是一名优秀的程序员,十分优秀!