Jeg visste allerede at jeg kunne passere i et objekt:
{a:"this is a"}
hvor en er navnet på variabelen, men jeg virkelig ønsker å bare passere i en variabel eller navnet på en variabel (en eller "a") og la funksjonen liksom finne navnet på variabelen og dens verdi.
Grunnen til at jeg ønsker å gjøre dette litt rare er at jeg skriver en debug print rutine. Hvis jeg kaller det slik:
var x = "some string";
say(x);
eller
say("x");
Jeg vil at det skal skrives ut noe sånt som:
X (string) = some string
Jeg kan ganske sikkert finne den typen en variabel gått, og så jeg vet hvordan å skrive den ut, men jeg virkelig ønsker å prøve å unngå redunancy for å måtte kalle det slik:
say("x", x);
som er det jeg må gjøre nå.
Hva synes nesten fungere er OrbMan svar. Jada, eval er ond , men jeg tror det er OK her fordi det er bare for en debug verktøy og vil ikke være i den publiserte kode. Jeg har gjort en liten test rutine av min egen ved hjelp av denne løsningen:
var x = "this is x";
function say(a) {
alert(a + " = " + eval(a));
}
say("x");
og det fungerer, men bare hvis X er global . Dette fungerer ikke:
function wrapper() {
var x = "this is x";
say("x");
}
Så dette er løsningen nære, men siden jeg bruker nesten ingen Globale variabler, er dette ikke kommer til å fungere. Darn, det er såååå nær. Det jeg tror jeg trenger er "anrop ved navn" i stedet for "etter verdi" eller "med referanse". Og jeg trenger en funksjon som vil fungere om det blir kalt fra en annen funksjon eller ikke.
Siden jeg har satt i en god del timer på dette selv, å stille spørsmålet her var en handling av desperasjon, jeg er nødt til å konkludere med at det egentlig ikke er noen måte å gjøre dette. Shucks.
Til alle som svarte, takk for all hjelp.