我有一个函数A,它在运行时接受另一个函数B作为参数并调用它。问题是函数B需要一些参数,但我不知道如何将函数B(带参数)传递给函数A.
示例:
function callerFunction(c)
{
alert("The caller is calling the function!");
c(c.arguments);
};
var a = "hello";
function thisOne(d)
{
d = "I changed my way";
alert(d);
};
callerFunction( /* I NEED TO PASS THE 'thisOne' with the parameter/variable 'a' here, and then call it inside 'callerFunction' */);
答案 0 :(得分:3)
只需传递一个闭包:
callerFunction(function() { thisOne(a); });
并将其称为c()
,而不是c(c.arguments)
。
请注意,此匿名函数将引用a
变量,而不是当前值a
。因此,如果callerFunction()
存储此函数对象并稍后调用它,如果您在传递匿名函数和调用它之间更改a
中的值,则a
的值为var a = 1;
var fn = function() { console.log(a); };
fn(); // Logs 1
a = 2;
fn(); // Logs 2
匿名函数的视角会发生变化:
{{1}}