是否有一种方法可以将变量传递给回调函数而不将其包装在另一个函数中?

Is there a way to pass a variable to a callback function without wrapping it in another function?

本文关键字:函数 回调 另一个 包装 一种 变量 方法 是否      更新时间:2023-09-26

我希望我问对了。

我有jQuery行:
$("main").load("link.html", runFunction);

就可以了。但是现在我想传递一个变量给函数runFunction,但是做

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

不起作用,因为它正在被立即调用。我知道我可以写

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

但是我想知道是否有任何其他方法可以将变量发送到runFunction,而不需要额外的包装函数

在底层,创建一个新函数是不可避免的,因为您传入的"bound"参数与某个作用域绑定在一起,并且您将调用的函数将在不同的作用域中调用。要实现这一点,您需要一个闭包,您可以使用内联匿名函数创建它。

也就是说,JavaScript通过Function.prototype.bind调用使这更容易。在MDN上查看bind()

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

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

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

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