Javascript 有没有一种方法可以将变量传递给回调函数,而不用将其包装到另一个函数中?

Javascript 有没有一种方法可以将变量传递给回调函数,而不用将其包装到另一个函数中?,javascript,jquery,Javascript,Jquery,我希望我问得对 我有jQuery行: $("main").load("link.html", runFunction); 这很好。但是现在我想把一个变量传递给函数runFunction,但是 $("main").load("link.html", runFunction(myvar)); 不起作用,因为它正在被立即调用。我知道我能做到 $("main").load("link.html", function() {runFunction(myvar)}); 但是我想知道是否有其他方法可以在

我希望我问得对

我有jQuery行:

$("main").load("link.html", runFunction);
这很好。但是现在我想把一个变量传递给函数
runFunction
,但是

$("main").load("link.html", runFunction(myvar));
不起作用,因为它正在被立即调用。我知道我能做到

$("main").load("link.html", function() {runFunction(myvar)});

但是我想知道是否有其他方法可以在没有额外包装函数的情况下将变量发送到runFunction。

在后台,创建一个新函数是不可避免的,因为您要传递的“绑定”参数绑定到某个作用域,并且您要调用的函数将在不同的作用域中调用。要实现这一点,您需要一个闭包,可以使用内联匿名函数创建闭包

这就是说,JavaScript通过
函数.prototype.bind
调用使这变得更容易。退房

bind
允许您创建前导绑定参数(即,您不能使用它将第二个参数绑定到变量,但不能将第一个参数绑定到第二个参数)

变成

$("main").load("link.html", runFunction.bind(window, myvar)});

请注意,传递给
bind
的第一个参数是
thisArg
,这是JavaScript对象,它将与函数体中的
这个
参数关联。

是的,有一种方法,尽管您需要更多的代码。为什么不直接使用包装器呢?有
bind
,但通常最后一个代码片段是正确的方法。上面的代码是最简单的解决方案。
$("main").load("link.html", runFunction.bind(window, myvar)});