Мне нужно найти аргумент, переданный функции из функции.
Предположим, у меня есть функция под названием 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});
Но это слишком запутанно и поэтому неприемлемо. Способ вызова бара
изменить нельзя.