Программно получить значения переменных, локальных для функции в JavaScript? - PullRequest
4 голосов
/ 14 апреля 2009

Дано:

function foo(){
  var bar = "quux";
  console.log(/*mystery code here*/);
}

Я ищу код, который при вставке в комментарий даст значение bar. В качестве иллюстрации, что-то вроде этого работает в глобальном масштабе:

var foo = "bar";
var bar = "quux";
console.log(window[foo]);

Но, конечно, переменные, определенные глобально, добавляются к объекту окна. Переменные, локальные для функции, не являются. Есть ли подобный способ программно добраться до локальных переменных функции?

Ответы [ 4 ]

1 голос
/ 14 апреля 2009

Нет, не боюсь.

См .: местные JavaScript ()?

0 голосов
/ 16 декабря 2012

Очень длинная мертвая нить, но она не справится.

(function() {
  var foo = "bar";
  var bar = "quux";
  altert(eval(foo));
})()
0 голосов
/ 14 апреля 2009

Насколько я знаю, это невозможно, и я не понимаю, чем это может быть полезно. Однако вы можете найти имена полей любого объекта с конструкцией for ... in следующим образом:

for(field in obj){
   console.debug("Obj has a field named:"+field+" with value:"+obj[field]);
}
0 голосов
/ 14 апреля 2009

Во-первых, зачем вам это делать? Разве этого недостаточно, чтобы сделать что-то подобное?

console.log(bar);

Локальные переменные недоступны вне его области действия в JS, но если вы пытаетесь получить к ним доступ только внутри своей функции, то нет необходимости в альтернативном способе доступа к ним.

Возможно, если бы вы сказали нам реальную проблему, стоящую за этим (не только этим примером), мы могли бы предоставить вам лучшую альтернативу, чем поискать что-то вроде window[foo].

...