调试时我经常写一些类似console.log("foo:"+foo+", bar:"+bar)
的内容,是否可以编写一个函数logValues(foo,bar)
来提供相同的输出?基本上我在问是否有办法从变量变为该变量的名称。我是否必须使用索引屈服[0]: 'value of foo, [1]: 'value of bar'
感谢您阅读
答案 0 :(得分:2)
试试这段代码:
var logValues = function(){
var args = arguments;
for(var i in args)
window.console.log(args[i] + ": " + eval(args[i]));
}
logValues("foo","bar");
答案 1 :(得分:2)
(这些选项都没有直接回答这个问题;但是应该为你要做的事情提供更好的选择)
WebKit的检查员(我假设Firebug)允许您记录复杂的类型,根本不需要编写助手!
只需console.log(foo, bar)
就可以了。如果您想在输出中输入变量名,请console.log({foo: foo, bar: bar})
。
替代答案:
你可能会考虑一个只需要一个对象并将其吐出的帮助器 - 它不会节省太多,如果有的话,输入;但结果是更可读的代码与记录的输出非常匹配。
window.logValues = function(values) {
var k, v;
var pairs = [];
for (k in values) {
v = values[k];
pairs.push("" + k + ": " + v);
}
console.log(pairs.join(", "));
};
然后将其称为:
logValues({foo: 1, bar: "asdf"})
您看到了:
foo: 1, bar: asdf
选项#3:
或者是一个更简洁的例子,可能会删除比你想要的更多的类型信息:
window.logValues = function(values) {
console.log(JSON.stringify(values));
}
答案 2 :(得分:0)
function logValue(foo)
{
console.log(foo + ": " + eval(foo));
}
var foo = "something";
logValue("foo");
这样可行,但你必须确保你的foo变量在logValue函数中可用。
答案 3 :(得分:0)
我使用两个数组来存储所有数据:
data=[];
names=[];
foo=1;
data[1]="foovalue";
names[1]="foo";
bar=2;
data[bar]=28;
names[bar]="bar";
etcetera,我在项目中使用的所有全局值 接下来,您可以编写像
这样的代码data[foo]=data[foo] + data[bar];
data[bar]=data[bar]+22;
function log(a,b){
//something like
var=text;
text=names[a] + " = " + data[a];
text=text + linebreak + names[b] + " = " + data[b];
}
你也可以用它来写html;
function writedataval(arrnumber){
document.getElementById(names[arrnumber] ).innerHTML = data[arrnumber] ;
}
writedataval(foo);
必须有一个id =" foo"在您成功运行此代码之前
我认为这种方法在许多方面都非常有用,因为您还可以使用数组索引来访问数据和名称。