Javascript Найти аргумент, переданный функции

Мне нужно найти аргумент, переданный функции из функции.

Предположим, у меня есть функция под названием foo :

function foo() {
  var a = 3;
  var b = "hello";
  var c = [0,4];
  bar(a - b / c);
  bar(c * a + b);
}

function bar(arg) { alert(arg) }

Как и сейчас, bar всегда будет предупреждать NaN .

] Внутри функции bar я хочу получить аргумент в том виде, в котором он был передан изначально. Кроме того, я хочу иметь доступ к значениям a , b и c из функции bar . Другими словами, мне бы хотелось чего-нибудь подобного:

bar(a - b / c);    

function bar() {
 //some magic code here
 alert(originalArg); //will alert "a - b / c"
 alert(vars.a + " " + vars.b + " " + vars.c); //will alert "3 hello 0,4"
} 

Вы можете не думать, что это возможно, но я знаю, что вы можете делать странные вещи с помощью Javascript. Например, вы можете отобразить код вызывающей функции следующим образом:

function bar() {
  alert(bar.caller);
}

Я готов поспорить на несколько долларов, что с помощью каких-то изысков вы сможете получить исходную форму аргумента и значения переменных в аргумент.

Я легко могу понять, как вы могли бы это сделать, если бы вам разрешили вызывать bar в такой форме:

bar(function(){return a - b / c}, {a: a, b: b, c: c});

Но это слишком запутанно и поэтому неприемлемо. Способ вызова бара изменить нельзя.

9
задан Peter Olson 16 July 2011 в 05:14
поделиться