JavaScript定义函数接受外部函数参数



我想定义一个函数:

const f = (outside, param1, param2) => {
outside(param1, param2);
}

但是我知道这个函数将总是在一个函数内部被调用,它有外部作为参数。例如:

const g = (outside, param3, param4) => {
// some code here
f(outside, var1, var2);
// some more code
}

是否有任何方法来定义f,以便我不需要在g内部调用时将outside传递给它?

我还希望能够在其他以outside为参数的函数中调用f,而不仅仅是g

是否有任何方法来定义f,以便我不需要在g内部调用时将outside传递给它?

。你要求使用动态作用域,但是JavaScript使用词法作用域。这意味着可用性/能见度的符号是由函数定义,不是如何/何时/何地。

您可以更改参数的顺序并根据它们的存在采取操作:

const f = (param1, param2, outside) => {
if (outside) {
outside(param1, param2);
} else {
...
}
}

不幸的是,在函数g之外定义的函数不能直接访问函数g中包含的变量。因此,必须将参数传递给函数f。

如果你这样改变你的逻辑呢?它能满足你的需要吗?

// Set function logic
const f = (param1, param2) => {
return param1 + param2;
}
// Outside method
const outside = v => {
console.log(`I'm outside: ${v}`);
}
// Call from outside logic
const g = (outside, param3, param4) => {
// If you know, that it is outside wrapper, wrap it here
outside(f(param3, param4));
}
g(outside, 2, 2);
// Call from else logic
console.log(`I'm else logic: ${f(3, 3)}`);

相关内容

  • 没有找到相关文章

最新更新