我需要一个函数expand(fn)
,它将接受任何函数并返回一个函数,其中输入函数中的所有函数调用都被这些函数的代码替换。
例如,下面给出了f
和g
函数:
function f(x) {
console.log('f: ' + x);
}
function g(x) {
console.log('g: ' + x);
f(x + 1);
}
expand(g)
应该返回这样一个函数:
function anon(x) {
console.log('g: ' + x);
var arg1 = x + 1;
{
console.log('f: ' + arg1);
}
}
expand(g)
应该像函数g
一样工作。但是expand(g)
不应该调用除标准JavaScript函数之外的任何函数。
当我将一个普通的JavaScript函数传递给外部沙箱并且我希望能够在该函数中使用我的函数和其他JS库时,这样的expand
函数会很方便。在那里被执行。
我希望能够使用参数,外部库中的函数和嵌套函数来扩展函数。甚至递归函数也可以转换为循环,但我现在还没有找到它。