我想创建一个日志函数,可以像这样插入变量名称:
var a = '123',
b = 'abc';
log([a, b]);
在控制台中输出应该如下所示
a: 123
b: abc
获取变量的值没有问题,但我如何获取变量名?该函数应该是通用的,因此我不能总是假设作用域是window。
我想创建一个日志函数,可以像这样插入变量名称:
var a = '123',
b = 'abc';
log([a, b]);
a: 123
b: abc
获取变量的值没有问题,但我如何获取变量名?该函数应该是通用的,因此我不能总是假设作用域是window。
["123","abc"];
仅仅如此
您可以向该函数提供变量的名称和它们所在的作用域,例如:
function log(arr,scope){
for(var i=0;i<arr.length;i++){
console.log(arr[i]+':'scope[arr[i]]);
}
}
我知道你想节省一些按键。我也是。然而,我通常会像其他人建议的那样记录变量名称和值。
console.log({a:a, b:b});
function log(o) {
var key;
for (key in o) {
console.log(key + ":", o[key]);
}
}
var a = '1243';
var b = 'qwre';
log({
a:a,
b:b
});
像这样的代码可以实现你所需要的功能:
function log(logDict) {
for (var item in logDict) {
console.log(item + ": " + logDict[item]);
}
}
function logSomeStuff() {
var dict = {};
dict.a = "123";
dict.b = "abc";
log(dict);
}
logSomeStuff();
我曾经遇到过类似的问题,但原因不同。
我找到的最佳解决方案是:
MyArray = ["zero","one","two","three","four","five"];
MyArray.name="MyArray";
所以如果:
x=MyArray.name;
然后:
X=="MyArray"
就像我说的,它适合我的需求,但不确定它对你有何作用。 我感到很傻,因为我甚至需要它,但我确实需要。
不知道这个在JS中是否真的可行...但是你可以使用一个对象,其中你可以存储名称和值:
function MyLogObject(name, value) {
this.name = name;
this.value = value;
}
var log = [];
log.push(new MyLogObject('a', '123'));
log.push(new MyLogObject('b', 'abc'));
for each (var item in log) {
if (item.value != undefined)
alert(item.name + "/" + item.value);
}
然后您可以循环遍历此对象,以获取名称和值
var x = 7;
var y = 8;
function logVars(arr){
for(var i = 0; i < arr.length; i++){
alert(arr[i] + " = " + window[arr[i]]);
}
}
logVars(["x","y"]);
测试一下。
var variableA="valor01"; <br>
var variableB="valor02";
var NamevariableA=eval('("variableA")');<br>
var NamevariableB=eval('("variableB")');<br>
console.log(NamevariableA,NamevariableB);
atte. Manuel Retamozo Arrué
var foo = bar = {}
的语法,同一个对象被两个名称引用,如果你只是将该对象传递到函数中,那么在函数内部无法反向查找并确定传递时所使用的名称。 - Gareth